ФорумПрограммированиеPHP для идиотов → тормозит сайт, оптимизация zend + smarty

тормозит сайт, оптимизация zend + smarty

  • mario

    Сообщения: ? Репутация: N Группа: Джедаи

    Spritz 8 октября 2010 г. 5:05, спустя 31 минуту 24 секунды


    VPS пока достаточно дорогое решение для меня) поэтому eAccelerator ом как я полагаю вопспользоваться не смогу.
    А вот по поводу склейки всех нужных файлов зенда в один, вот где то читал, читал что не помогает, где то пишут, что помогает. Скажите, кто пробовал, и был ли прирост от этого?
    на моем хостинге есть eaccelerator, но он естественно настроен хостером )
    [size=x-large]eAccelerator[/size]
    [table]
    <tbody>[tr]<th>eAccelerator support</th><th>enabled</th>[/tr]
    [tr][td]Version [/td][td]0.9.5.3 [/td][/tr]
    [tr][td]Caching Enabled [/td][td]true [/td][/tr]

    [tr][td]Optimizer Enabled [/td][td]true [/td][/tr]
    [tr][td]Memory Size [/td][td]3,145,727,936 Bytes [/td][/tr]
    [tr][td]Memory Available [/td][td]48,656 Bytes [/td][/tr]
    [tr][td]Memory Allocated [/td][td]3,145,679,280 Bytes [/td][/tr]
    [tr][td]Cached Scripts [/td][td]24073 [/td][/tr]
    [tr][td]Removed Scripts [/td][td]0 [/td][/tr]

    [tr][td]Cached Keys [/td][td]0 [/td][/tr]
    </tbody>[/table]

    [table]
    <tbody>[tr]<th>Directive</th><th>Local Value</th><th>Master Value</th>[/tr]
    [tr][td]eaccelerator.allowed_admin_path[/td][td]no value[/td][td]no value[/td][/tr]
    [tr][td]eaccelerator.cache_dir[/td][td]/tmp/eaccelerator[/td][td]/tmp/eaccelerator[/td][/tr]

    [tr][td]eaccelerator.check_mtime[/td][td]1[/td][td]1[/td][/tr]
    [tr][td]eaccelerator.compress[/td][td]1[/td][td]1[/td][/tr]
    [tr][td]eaccelerator.compress_level[/td][td]9[/td][td]9[/td][/tr]
    [tr][td]eaccelerator.debug[/td][td]0[/td][td]0[/td][/tr]
    [tr][td]eaccelerator.enable[/td][td]1[/td][td]1[/td][/tr]

    [tr][td]eaccelerator.filter[/td][td]no value[/td][td]no value[/td][/tr]
    [tr][td]eaccelerator.log_file[/td][td]no value[/td][td]no value[/td][/tr]
    [tr][td]eaccelerator.name_space[/td][td]no value[/td][td]no value[/td][/tr]
    [tr][td]eaccelerator.optimizer[/td][td]1[/td][td]1[/td][/tr]
    [tr][td]eaccelerator.shm_max[/td][td]0[/td][td]0[/td][/tr]

    [tr][td]eaccelerator.shm_only[/td][td]1[/td][td]1[/td][/tr]
    [tr][td]eaccelerator.shm_prune_period[/td][td]0[/td][td]0[/td][/tr]
    [tr][td]eaccelerator.shm_size[/td][td]3000[/td][td]3000[/td][/tr]
    [tr][td]eaccelerator.shm_ttl[/td][td]3600[/td][td]3600[/td][/tr]

    </tbody>[/table]

  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 8 октября 2010 г. 6:24, спустя 1 час 19 минут 23 секунды

    TimeWeb тоже включает eAccelerator на шареде. на самом деле хостеру это выгодно, кто так не делает, тот мудак.
    ιιlllιlllι унц-унц
  • mario

    Сообщения: ? Репутация: N Группа: Джедаи

    Spritz 8 октября 2010 г. 6:26, спустя 1 минуту 43 секунды

    а самом деле хостеру это выгодно, кто так не делает, тот мудак.

    тож верно )
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 8 октября 2010 г. 6:59, спустя 32 минуты 48 секунд

    както на шаред хостинге в своей папке скомпилил ffmpeg со всеми либами :D

    компилил долго, ибо получилась папа ~/usr не меньше чем реальная /usr :D

    Сапожник без сапог
  • ArhiISP

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 8 октября 2010 г. 7:43, спустя 44 минуты 20 секунд

    кешер байткода (eAccelerator),

    эм… а можно ли по подробнее, или ссылочку где почитать, у меня есть доступ как я понял к моему локальному( для моих сайтов) пхп.ини, уже писал в нем следующее

    register_globals= Off
    magic_quotes_gpc= Off
    display_errors= Off
    log_errors= On
    max_execution_time= 120
    memory_limit= 256M
    upload_max_filesize= 20M
    post_max_size= 20M

    {+++70+++} не оттуда цитату взял) выше подразумевалась цитат

    ArhiISP, если есть доступ к php.ini - можно прописать свои расширения. Найди только соответствующие бинарники
  • Абырвалг

    Сообщения: 6477 Репутация: N Группа: Джедаи

    Spritz 8 октября 2010 г. 8:04, спустя 21 минуту 15 секунд

    в php.ini ищешь директиву extension_dir, кладешь в нее скомпилированное расширение и включаешь его:

    extension=apc.so

    so - для линупса
    dll - для форточек

    только ж учти, что есть нюансы. На примере венды:
    допустим у тебя php TS (thread safe), vc6 - расширение тоже должно быть скомпилено при помощи vc6, в режиме thread safe


    зы: комрады, объясните плз, что из себя этот безопаснопотоковый режим означает? {+++106+++} впрочем, хули тут объяснять, сам нагуглил) http://stackoverflow.com/questions/1623914/what-is-thread-safe-or-non-thread-safe-in-php
  • Nox

    Сообщения: 204 Репутация: N Группа: Кто попало

    Spritz 8 октября 2010 г. 16:08, спустя 8 часов 4 минуты

    Какие вам нужны аргументы? 1 гб для пяти сайтов) да на вид дешевая хрень. Я вообще уже в россии не беру хостинг и насрать на пинг. Зато сайт как довольная жена.
  • arvitaly

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 8 октября 2010 г. 16:12, спустя 3 минуты 28 секунд

    Зато сайт как довольная жена.


    Хуярит пользователей сковородкой по лицу…
  • Nox

    Сообщения: 204 Репутация: N Группа: Кто попало

    Spritz 8 октября 2010 г. 16:15, спустя 3 минуты 54 секунды


    Зато сайт как довольная жена.


    Хуярит пользователей сковородкой по лицу…
    ты видел довольную телку?)
  • kostyl

    Сообщения: 5201 Репутация: N Группа: Джедаи

    Spritz 9 октября 2010 г. 4:31, спустя 12 часов 15 минут 49 секунд

    не пойму нафиг эту тему крепить… что в ней такого?
  • VaseninM

    Сообщения: 2417 Репутация: N Группа: Адекваты

    Spritz 9 октября 2010 г. 5:57, спустя 1 час 25 минут 36 секунд

    kostyl, +1. Все хоте написть, но забывал.
  • ArhiISP

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 9 октября 2010 г. 16:56, спустя 10 часов 58 минут 44 секунды

    что бы не плодить темы, еще хочу спросить…
    что значит эта ошибка?
    "Fatal error: Class EmailLogger contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Zend_Log_FactoryInterface::factory) in ХХХ/EmailLogger.php on line 41 (причем 41 это конец файла, последняя скобка)

    EmailLogger.php
    <?php
    class EmailLogger extends Zend_Log_Writer_Abstract
    {
    protected $_email;
    protected $_events = array();

    public function __construct($email)
    {
    $this->_formatter = new Zend_Log_Formatter_Simple();
    $this->setEmail($email);
    }

    public function setEmail($email)
    {
    $validator = new Zend_Validate_EmailAddress();
    if (!$validator->isValid($email))
    throw new Exception(&#39;Invalid e-mail address specified&#39;);

    $this->_email = $email;
    }

    protected function _write($event)
    {
    $this->_events[] = $this->_formatter->format($event);
    }

    public function shutdown()
    {
    if (count($this->_events) == 0)
    return;

    $subject = sprintf(&#39;Web site log messages (%d)&#39;,
    count($this->_events));

    $mail = new Zend_Mail();
    $mail->addTo($this->_email)
    ->setSubject($subject)
    ->setBodyText(join(&#39;&#39;, $this->_events))
    ->send();
    }
    }


    файл index.ini


    <?php 

    error_reporting(E_ALL|E_STRICT);
    ini_set(&#39;display_errors&#39;, 1);
    date_default_timezone_set(&#39;Europe/Moscow&#39;);

    //путь до установленного фреймворка
    set_include_path(&#39;.&#39;.PATH_SEPARATOR . &#39;../libs&#39;
    .PATH_SEPARATOR.&#39;../libs/Pear&#39;
    .PATH_SEPARATOR.get_include_path());


    require_once &#39;Zend/Loader/Autoloader.php&#39;;
    $loader = Zend_Loader_Autoloader::getInstance();
    $loader->registerNamespace(array(&#39;CustomControllerAclManager&#39;, &#39;Templater&#39;, &#39;CustomControllerAction&#39;
    , &#39;DatabaseObject&#39;, &#39;FormProcessor&#39;, &#39;Profile&#39;,&#39;Text_CAPTCHA&#39;
    ,&#39;Text_Password&#39;,&#39;Breadcrumbs&#39;,&#39;FCKeditor&#39;,&#39;EmailLogger&#39;));


    // создание регистратора событий
    $logger = new Zend_Log(new Zend_Log_Writer_Null());

    try {
    $writer = new EmailLogger($_SERVER[&#39;SERVER_ADMIN&#39;]);
    $writer->addFilter(new Zend_Log_Filter_Priority(Zend_Log::CRIT));
    $logger->addWriter($writer);

    //загрузка конфигурационной информации
    $configFile = &#39;&#39;;
    if (isset($_SERVER[&#39;APP_CONFIG_FILE&#39;]))
    $configFile = basename($_SERVER[&#39;APP_CONFIG_FILE&#39;]);

    if (strlen($configFile) == 0)
    $configFile = &#39;settings.ini&#39;;

    $configSection = &#39;&#39;;
    if (isset($_SERVER[&#39;APP_CONFIG_SECTION&#39;]))
    $configSection = basename($_SERVER[&#39;APP_CONFIG_SECTION&#39;]);

    if (strlen($configSection) == 0)
    $configSection = &#39;production&#39;;

    $config = new Zend_Config_Ini(&#39;../&#39; . $configFile, $configSection);
    Zend_Registry::set(&#39;config&#39;, $config);


    // $config=new Zend_Config_Ini(&#39;../settings.ini&#39;,&#39;development&#39;);
    // Zend_Registry::set(&#39;config&#39;,$config);

    //создание обьекта для системного журнала
    //$logger=new Zend_Log(new Zend_Log_Writer_Stream($config->logging->file));

    $logger->addWriter(new Zend_Log_Writer_Stream($config->logging->file));
    $writer->setEmail($config->logging->email);
    Zend_Registry::set(&#39;logger&#39;,$logger);

    //соединение с базой данных
    $params = array(&#39;host&#39; => $config->database->hostname,
    &#39;username&#39; => $config->database->username,
    &#39;password&#39; => $config->database->password,
    &#39;dbname&#39; => $config->database->database,
    &#39;driver_options&#39;=> array(PDO::MYSQL_ATTR_INIT_COMMAND => &#39;SET NAMES UTF8&#39;),
    &#39;profiler&#39; => false);


    $db = Zend_Db::factory($config->database->type, $params);
    $db->getConnection();
    Zend_Registry::set(&#39;db&#39;, $db);
    $db->query(&quot;set names utf8&quot;);

    //настройка аутентификации пользователей
    $auth = Zend_Auth::getInstance();
    $auth->setStorage(new Zend_Auth_Storage_Session());

    //обработка запроса пользователя
    $controller=Zend_Controller_Front::getInstance();
    $controller->throwExceptions(true);
    $controller->setControllerDirectory($config->paths->base.&#39;/include/Controllers/&#39;);
    $controller->registerPlugin(new CustomControllerAclManager($auth));

    //настройка визуализации
    $vr = new Zend_Controller_Action_Helper_ViewRenderer();
    $vr->setView(new Templater());
    $vr->setViewSuffix(&#39;tpl&#39;);
    Zend_Controller_Action_HelperBroker::addHelper($vr);


    // определение маршрута для домашних страниц пользователей
    $route = new Zend_Controller_Router_Route(&#39;user/:username/:action/*&#39;,
    array(&#39;controller&#39; => &#39;user&#39;,
    &#39;action&#39; => &#39;index&#39;)
    );

    $controller->getRouter()->addRoute(&#39;user&#39;, $route);

    // назначение маршрута для просмотра записей блога
    $route = new Zend_Controller_Router_Route(
    &#39;user/:username/view/:url/*&#39;,
    array(&#39;controller&#39; => &#39;user&#39;,
    &#39;action&#39; => &#39;view&#39;)
    );
    $controller->getRouter()->addRoute(&#39;post&#39;, $route);

    // назначение маршрута для просмотра ежемесяных архивов
    $route = new Zend_Controller_Router_Route(
    &#39;user/:username/archive/:year/:month/*&#39;,
    array(&#39;controller&#39; => &#39;user&#39;,
    &#39;action&#39; => &#39;archive&#39;)
    );
    $controller->getRouter()->addRoute(&#39;archive&#39;, $route);


    // определение маршрута для подборок по меткам
    $route = new Zend_Controller_Router_Route(&#39;user/:username/tag/:tag/*&#39;,
    array(&#39;controller&#39; => &#39;user&#39;,
    &#39;action&#39; => &#39;tag&#39;));

    $controller->getRouter()->addRoute(&#39;tagspace&#39;, $route);

    $controller->throwExceptions(true);
    $controller->dispatch();
    }
    catch (Exception $ex) {
    $logger->emerg($ex->getMessage());

    header(&#39;Location: /error.html&#39;);
    exit;
    }



  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 9 октября 2010 г. 18:51, спустя 1 час 55 минут 49 секунд

    написано же: не перекрыт абстрактный метод factory, перекрой метод своим
    ιιlllιlllι унц-унц

Пожалуйста, авторизуйтесь, чтобы написать комментарий!