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

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

  • mario

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

    Spritz Окт. 8, 2010, 4: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

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

    Spritz Окт. 8, 2010, 5:24 п.п., спустя 1 час 19 минут 23 секунды

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

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

    Spritz Окт. 8, 2010, 5:26 п.п., спустя 1 минуту 43 секунды

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

    тож верно )
  • phpdude

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

    Spritz Окт. 8, 2010, 5:59 п.п., спустя 32 минуты 48 секунд

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

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

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

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

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

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

    Spritz Окт. 8, 2010, 7: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 Окт. 9, 2010, 3:08 д.п., спустя 8 часов 4 минуты

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

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

    Spritz Окт. 9, 2010, 3:12 д.п., спустя 3 минуты 28 секунд

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


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

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

    Spritz Окт. 9, 2010, 3:15 д.п., спустя 3 минуты 54 секунды


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


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

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

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

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

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

    Spritz Окт. 9, 2010, 4:57 п.п., спустя 1 час 25 минут 36 секунд

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

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

    Spritz Окт. 10, 2010, 3: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

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

    Spritz Окт. 10, 2010, 5:51 д.п., спустя 1 час 55 минут 49 секунд

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

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