Показать страницуИстория страницыСсылки сюдаЭкспорт в PDFНаверх Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== php и eAccelerator ====== Что такое: PHP accelerator & optimizer Ubuntu 10.04.3 LTS x64 - в пакетах нет уже собранного eAccelerator'а, значит будем собирать самостоятельно. * Ставим необходимый софт для сборки: <code bash> # apt-get install build-essential php5-dev </code> * Переходим в папку где будем собирать, я использую /usr/src/ <code bash> # cd /usr/src </code> * Берем свежий пакет с сайта eAccelerator : <code bash> # wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2 </code> * Распаковываем <code bash> # tar xvf eaccelerator-0.9.6.1.tar.bz2 </code> * Заходим в папку <code bash> # cd eaccelerator-0.9.6.1 </code> * Подготавливаем все к сборке: <code bash> # phpize # ./configure --enable-eaccelerator=shared </code> * Собираем и устанавливаем: <code bash> # make # make install </code> Посмотрите пути, куда будет скопирован собранный eaccelerator.so, у меня это папка /usr/lib/php5/20090629/ * Подключаем eAcceletor: Можно отредактировать оригинальный php.ini или создать новый файл в папке conf.d которую использует PHP - в моем случае это /etc/php5/conf.d <code bash> # cd /etc/php5/conf.d # touch eaccelerator.ini </code> * Добавляем в файл следующие строки: <code php> ; Подключаем 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" </code> * Создаем папку, куда будет складывать кэш во время работы eAccelerator: <code bash> # mkdir /var/cache/eaccelerator # chown www-data.www-data /var/cache/eaccelerator </code> * Ну и пора перезапускать Apache <code bash> # sudo service apache2 restart </code> Настроек в ini-файле много, описание можно посмотреть здесь: http://www.eaccelerator.net/wiki/Settings Проверить а заработали ли все можно создав php-файл с текстом <code php> <?php phpinfo(); ?> </code> Если после открытия этого файла нашлось упоминание eAccelerator - значит все заработало. Так же можно проверить папку /var/cache/eaccelerator на наличие новых файлов. ====== Увеличиваем объем используемой памяти ====== По умолчанию переменная **eaccelerator.shm_size** установлена в "0" - это означает использовать объем памяти, принятый в операционной системе по умолчанию. Для Debian/Ubuntu это всего 32 Mb. Мало, что же это за кэш такой? Будем увеличивать. Добавляем в файл /etc/sysctl.conf строчку <code> kernel.shmmax = 268435456 # 256 Mb #kernel.shmmax = 494967295 # 512 Mb </code> и меняем в /etc/php5/conf.d/eaccelerator.ini <code> eaccelerator.shm_size = "256" </code> Чтобы изменения вступили в силу необходимо применить внесенные изменения в sysctl.conf и перезапустить веб-сервер <code> # sudo sysctl -p # sudo service apache2 restart </code> И зайдя на страничку управления eAccelerator можно посмотреть все ли заработало. ====== Траблшутинг ====== ===== "Не работает" (с) ===== Если PHP обновлялся, то eAccelerator перестанет работать. Признаки простые: на страничке управления видим <code> Caching enabled no Optimizer enabled no Check mtime enabled no </code> хотя в файле конфигурации все включено, а команда <code> # php -m </code> пишет примерно следующее: <code> [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. </code> Решается просто: нужно заново пересобрать как указано выше. Если собираете в старом каталоге, то сначала надо его почистить: <code> # make clean </code> и затем собрать снова. ===== Проблема с open_basedir ===== При компиляции (в версиях 0.9.6 и 0.9.6.1) вылазит ошибка: <code> PHP Warning: Unknown: open_basedir restriction in effect. File() is not within the allowed path(s): (<your_open_basedir_dirs>) in Unknown on line 0 </code> Все оказывается просто. При использовании директивы 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}} software/php/eaccelerator.txt Последнее изменение: 2017/05/09 18:34 — 127.0.0.1