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

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

  • mario

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

    Spritz 8 октября 2010 г. 8: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

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

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

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

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

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

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

    тож верно )
  • phpdude

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

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

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

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

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

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

    Spritz 8 октября 2010 г. 10: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 - можно прописать свои расширения. Найди только соответствующие бинарники
  • Абырвалг

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

    Spritz 8 октября 2010 г. 11: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 г. 19:08, спустя 8 часов 4 минуты

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

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

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

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


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

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

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


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


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

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

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

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

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

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

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

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

    Spritz 9 октября 2010 г. 19: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('Invalid e-mail address specified');

    $this->_email = $email;
    }

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

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

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

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


    файл index.ini


    <?php 

    error_reporting(E_ALL|E_STRICT);
    ini_set('display_errors', 1);
    date_default_timezone_set('Europe/Moscow');

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


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


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

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

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

    if (strlen($configFile) == 0)
    $configFile = 'settings.ini';

    $configSection = '';
    if (isset($_SERVER['APP_CONFIG_SECTION']))
    $configSection = basename($_SERVER['APP_CONFIG_SECTION']);

    if (strlen($configSection) == 0)
    $configSection = 'production';

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


    // $config=new Zend_Config_Ini('../settings.ini','development');
    // Zend_Registry::set('config',$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('logger',$logger);

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


    $db = Zend_Db::factory($config->database->type, $params);
    $db->getConnection();
    Zend_Registry::set('db', $db);
    $db->query("set names utf8");

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

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

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


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

    $controller->getRouter()->addRoute('user', $route);

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

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


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

    $controller->getRouter()->addRoute('tagspace', $route);

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

    header('Location: /error.html');
    exit;
    }



  • artoodetoo

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

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

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

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