====== php и eAccelerator ====== Что такое: PHP accelerator & optimizer Ubuntu 10.04.3 LTS x64 - в пакетах нет уже собранного eAccelerator'а, значит будем собирать самостоятельно. * Ставим необходимый софт для сборки: # apt-get install build-essential php5-dev * Переходим в папку где будем собирать, я использую /usr/src/ # cd /usr/src * Берем свежий пакет с сайта eAccelerator : # wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2 * Распаковываем # tar xvf eaccelerator-0.9.6.1.tar.bz2 * Заходим в папку # cd eaccelerator-0.9.6.1 * Подготавливаем все к сборке: # phpize # ./configure --enable-eaccelerator=shared * Собираем и устанавливаем: # make # make install Посмотрите пути, куда будет скопирован собранный eaccelerator.so, у меня это папка /usr/lib/php5/20090629/ * Подключаем eAcceletor: Можно отредактировать оригинальный php.ini или создать новый файл в папке conf.d которую использует PHP - в моем случае это /etc/php5/conf.d # cd /etc/php5/conf.d # touch eaccelerator.ini * Добавляем в файл следующие строки: ; Подключаем zend_extension = "/usr/lib/php5/20090629/eaccelerator.so" ; Размер кэша, в Мб. Не может быть больше чем /proc/sys/kernel/shmmax, (0 - использовать по умолчанию, 32 Мб) eaccelerator.shm_size = "0" ; Папка для хранения кэша eaccelerator.cache_dir = "/var/cache/eaccelerator" ; Переключатель модуля (1 - вкл и 0 - выкл) eaccelerator.enable = "1" ; Переключатель оптимизатора (1 - вкл и 0 - выкл) eaccelerator.optimizer = "1" ; Проверять время модификации файлов кеша для их перекомпиляции (1 - вкл и 0 - выкл) eaccelerator.check_mtime = "1" ; Добавляет отладочную информацию в лог (1 - вкл и 0 - выкл) eaccelerator.debug = "0" ; Куда писать отладочную информацию eaccelerator.log_file = "/var/log/eaccelerator.log" ; Фильтр расширений файлов которых надо кешировать. Например, "*.php *.phtml" eaccelerator.filter = "" ; Размер выделяемой памяти, в байтах. Допустимо вводить в формате 10240, 10K, 1M и т.д. (0 - безлимит) eaccelerator.shm_max = "0" ; Время жизни кеша, секунд eaccelerator.shm_ttl = "0" ; Период удаления старых данных из памяти, секунд (0 - не удалять) eaccelerator.shm_prune_period = "0" ; Использовать для кеша только память ( 0 - используется диск и память, 1 - только память) eaccelerator.shm_only = "0" ; Переключатель уровня сжатия (1 - вкл, 0 - выкл) eaccelerator.compress = "1" ; Степень уровня сжатия (1 - минимум, 9 - максимум) eaccelerator.compress_level = "7" ; Ограничивает запуск скрипта управления, аналог open_base_dir eaccelerator.allowed_admin_path = "/var/www/eaccelerator" * Создаем папку, куда будет складывать кэш во время работы eAccelerator: # mkdir /var/cache/eaccelerator # chown www-data.www-data /var/cache/eaccelerator * Ну и пора перезапускать Apache # sudo service apache2 restart Настроек в ini-файле много, описание можно посмотреть здесь: http://www.eaccelerator.net/wiki/Settings Проверить а заработали ли все можно создав php-файл с текстом Если после открытия этого файла нашлось упоминание eAccelerator - значит все заработало. Так же можно проверить папку /var/cache/eaccelerator на наличие новых файлов. ====== Увеличиваем объем используемой памяти ====== По умолчанию переменная **eaccelerator.shm_size** установлена в "0" - это означает использовать объем памяти, принятый в операционной системе по умолчанию. Для Debian/Ubuntu это всего 32 Mb. Мало, что же это за кэш такой? Будем увеличивать. Добавляем в файл /etc/sysctl.conf строчку kernel.shmmax = 268435456 # 256 Mb #kernel.shmmax = 494967295 # 512 Mb и меняем в /etc/php5/conf.d/eaccelerator.ini eaccelerator.shm_size = "256" Чтобы изменения вступили в силу необходимо применить внесенные изменения в sysctl.conf и перезапустить веб-сервер # sudo sysctl -p # sudo service apache2 restart И зайдя на страничку управления eAccelerator можно посмотреть все ли заработало. ====== Траблшутинг ====== ===== "Не работает" (с) ===== Если PHP обновлялся, то eAccelerator перестанет работать. Признаки простые: на страничке управления видим Caching enabled no Optimizer enabled no Check mtime enabled no хотя в файле конфигурации все включено, а команда # php -m пишет примерно следующее: [eAccelerator] This build of "eAccelerator" was compiled for PHP version 5.3.2-1ubuntu4.7. Rebuild it for your PHP version (5.3.2-1ubuntu4.9) or download precompiled binaries. Решается просто: нужно заново пересобрать как указано выше. Если собираете в старом каталоге, то сначала надо его почистить: # make clean и затем собрать снова. ===== Проблема с open_basedir ===== При компиляции (в версиях 0.9.6 и 0.9.6.1) вылазит ошибка: PHP Warning: Unknown: open_basedir restriction in effect. File() is not within the allowed path(s): () in Unknown on line 0 Все оказывается просто. При использовании директивы PHP open_basedir для обеспечения безопасности, нужно собрать eAccelerator с опцией ''--without-eaccelerator-use-inode''. Данный механизм хранения кэша не совместим с open_basedir, поэтому open_basedir в сочетании с этой опцией приводит к фатальным ошибкам в скриптах. спасибо leopard: [[http://leopard.in.ua/2010/07/28/eaccelerator_open_basedir/]] ====== Ссылки ====== * Домашняя страничка - http://www.eaccelerator.net/ и https://eaccelerator.net/ и еще http://sourceforge.net/projects/eaccelerator/ {{tag>php eAccelerator eaccelerator.shm_size}}