3. Цель профилирования - выловить узкие места
1. Xdebug
Временной отчет о Просмотр в
Xdebug процессе выполнения удобочитаемом виде
сценариев в WinCacheGrind
2. Отлавливание 3. FirePHP
медленных SQL-запросов
Логирование SQL запросов на
Наглядное
стороне сервера
Интеграция в отслеживание
ZF с FirePHP SQL запросов в
FireFox
Отчет
6. Оптимизация: уровень приложения
Zend_Cache
ранение кэша в
памяти с
применением
Memcached
. Кэширование структуры таблиц
ранение
. Кэширование информации кэшированных
фрагментов на
диске в виде файлов
7. Оптимизация: уровень приложения
Объединение классов
lass 1 lass 2 lass n
. Накопительная сборка всех
используемых классов Zend в lass 1 Class 2
один php-файл
lass 3
. Накопительная сборка всех
классов, наследуемых от ZF в lass n
один файл
8. Оптимизация: сборщик классов
spl_autoload_register('__autoload');
начало($str) register_shutdown_function('__autoload');
$str пустое нет Класс да
? определён?
да нет
конец
Пробуем инклудить по
Берем список классов ZF, открываем каждый
имени ($str).
файл и сливаем его содержимое в один файл Пробуем определить
путь к классу по
Удалось нет
Берем список пользовательских классов, имени
?
открываем каждый файл и сливаем его да
нет
содержимое в один файл Записываем в очередь на
удалось?
добавление в список
да
конец пользовательских классов
Записываем в очередь на
добавление в список
классов ZF
9. Оптимизация: файл конфигурации
Zend/Application.php
public function __construct($environment, $options = null)
{
$this->_environment = (string) $environment;
require_once 'Zend/Loader/Autoloader.php';
$this->_autoloader = Zend_Loader_Autoloader::getInstance();
if (null !== $options) {
$session = new Zend_Session_Namespace('iniconf');
if (!$sessOptions = $session->arrConfig) {
if (is_string($options)) {
$options = $this->_loadConfig($options);
$session->config = $options;
Zend_Registry::set('conf', $options);
$options=$options->toArray();
$session->arrConfig = $options;
} elseif ($options instanceof Zend_Config) {
$options = $options->toArray();
} elseif (!is_array($options)) {
throw new Zend_Application_Exception('Invalid options provided; must be location of config file, a config object, or an array');
}
} else {
Zend_Registry::set('conf', $session->config);
$options = $sessOptions;
}
$this->setOptions($options); }
}