Оптимизация PHP [Базовые]

Тема в разделе "Администрирование серверов", создана пользователем nix, 16 мар 2013.

  1. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    В этой статье мы рассмотрим базовые настройки самого php интерпретатора и установим акселератор php - Eaccelerator

    Также с уществующие много аналогов, например:
    • 2.1 Alternative PHP Cache
    • 2.2 eAccelerator
    • 2.3 PhpExpress
    • 2.4 XCache
    Зачастую наибольшая нагрузка создается вовсе не HTTP-сервером, а интерпретатором языка программирования, используемого для создания динамического содержимого веб-сайта.
    Открываем файл /etc/php5/apache2/php.ini (путь для Ubuntu, в других дистрибутивах может быть иным) и редактируем следующие строки:
    • memory_limit — лимит на съедаемую при генерации веб-страницы память. Перед изменением этого параметра рекомендуется выполнить соответствующие замеры и основывать значение уже на их результатах.
    • display_errors = Off, error_log = /var/log/php — перенаправлять сообщения об ошибках в log-файл. Включай этот параметр тогда, когда все скрипты будут полностью отлажены.
    • upload_max_filesize и post_max_size — максимальный размер загружаемых файлов и POST-запросов. Опять же, значение должно быть выбрано исходя из потребностей твоего веб-приложения.
    Теперь можно закрыть файл и выполнить глубокую оптимизацию с помощью PHP-ускорителя а именно - Eaccelerator.
    Установка Eaccelerator

    PHP — язык интерпретируемый. Это значит, что каждый раз, когда происходит вызов скрипта на этом языке, запускается PHP-интерпретатор, который проводит полный анализ исходного кода. Причем, если спустя секунду произойдет второй запуск того же скрипта, вся процедура будет повторена заново. Это нерациональное использование ресурсов, поэтому мы применим инструмент под названием eAccelerator, который скомпилирует исходные тексты PHP в двоичное представление, оптимизирует их и будет бережно хранить в оперативной памяти для более быстрого доступа. Благодаря только этому скорость обработки PHP-скриптов вырастет в десятки раз (подтверждено тестами).

    Пакета eAccelerator нет в репозиториях популярных дистрибутивов, поэтому его придется собрать самостоятельно. Сначала устанавливаем необходимые для сборки утилиты:
    Код:
    $ sudo apt-get install php5-dev build-essential
    Далее получаем исходные тексты eAccelerator:
    Код:
    $ cd /tmp/
    $ wget http://bart.eaccelerator.net/source/0.9.6.1/
    eaccelerator-0.9.6.1.tar.bz2
    Распаковываем архив и переходим в каталог
    Код:
    $ tar xvjf eaccelerator-0.9.6.1.tar.bz2
    $ cd eaccelerator-0.9.6.1
    Компилируем
    Код:
    $ phpize
    $ ./configure --enable-eaccelerator=shared
    $ make
    $ sudo make install
    Создаем каталог для хранения кэша:
    Код:
    $ sudo mkdir -p /var/cache/eaccelerator
    $ sudo chmod 0777 /var/cache/eaccelerator
    И, наконец, подключаем eAccelerator к PHP (добавить в начало файла):
    Код:
    $ vi /etc/php5/apache2/php.ini
    PHP:
    Подключаем расширение
    extension 
    "eaccelerator.so"
    eaccelerator.enable "1"
    Максимальный размер дискового кэша (Мб)
    eaccelerator.shm_size "64"
    Каталог для хранения кэша
    eaccelerator
    .cache_dir "/var/cache/eaccelerator"
    Включаем оптимизатор кода
    eaccelerator
    .optimizer "1"
    Перекомпилировать модифицированные скрипты
    eaccelerator
    .check_mtime "1"
    Отключаем режим отладки
    eaccelerator
    .debug "0"
    Кэшировать все файлы (пустой фильтр)
    eaccelerator.filter ""
    Неограниченный размер кэша в памяти
    eaccelerator
    .shm_max "0"
    В случае отсутствия места в кэше удалять объекты старше
    1 часа 
    (3600 секунд)
    eaccelerator.shm_ttl "3600"
    eaccelerator.shm_prune_period "0"
    Кэшировать данные и в памятии на диске
    eaccelerator
    .shm_only "0"
    Сжимать кэшированные данные с максимальным уровнем компрессии
    eaccelerator
    .compress "1"
    eaccelerator.compress_level "9"
     
    AlexV нравится это.
  2. sitecreator

    sitecreator

    Регистрация:
    1 фев 2013
    Сообщения:
    291
    Симпатии:
    65
    судя из написанного складывается впечатление, что Eaccelerator и eAccelerator- это разные акселераторы.
    Так оно и есть?
     
  3. web2us

    web2us

    Регистрация:
    10 мар 2013
    Сообщения:
    0
    Симпатии:
    0
    нет, это одно и тоже
     
    Yuriy_Z нравится это.
  4. sitecreator

    sitecreator

    Регистрация:
    1 фев 2013
    Сообщения:
    291
    Симпатии:
    65
    Есть ли сравнительный анализ разных акселераторов?
    Я, например, выбираю между APC и eAccelerator.
     
  5. web2us

    web2us

    Регистрация:
    10 мар 2013
    Сообщения:
    0
    Симпатии:
    0
    разные для разных задач. АРС медленней в бытовых сайтах
     
  6. sitecreator

    sitecreator

    Регистрация:
    1 фев 2013
    Сообщения:
    291
    Симпатии:
    65
    Уточню задачу. Для магазина на Opencart с количеством товаров менее 1000.
    что предпочесть?

    и какова в % разница работы с ускорителем и без него? 10% или 200%? порядок?
     
  7. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    1-2% ето только снимет немного нагрузку на пхп а так для ускорения вам нужно мускуля ковырять
     
  8. finogenf

    finogenf

    Регистрация:
    31 май 2013
    Сообщения:
    8
    Симпатии:
    1
    А как сделать тест чтобы понять включился акселератор или нет?
    как измерить скорость загрузки с акселератором и без него?
    чтобы понять есть ли прок от него.

    и размер дискового кеша чем больше тем лучше? можно сразу 1024М выставить? это лучше чем 64?
     
  9. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    PHP:
     phpinfo()
     
  10. web2us

    web2us

    Регистрация:
    10 мар 2013
    Сообщения:
    0
    Симпатии:
    0
    что бы измерить скорость - делаете синтетический тест, например генерация страницы с 10 тыс. запросов к базе и кучей переменных и смотрите до и после
     
  11. Sunray

    Sunray

    Регистрация:
    31 дек 2012
    Сообщения:
    50
    Симпатии:
    4
    незнаю мне APC больше нравится,да и тесты в гугле как то к нему больше склоняли, проблем не знаю с ним
    --- добавлено: Jun 8, 2013 1:19 PM ---
    APC (Alternative PHP Cache) - открытый и бесплатный опкод кешер для PHP. Сравнивая APC и eAccelerator, можно сказать, что будущее за APC. Этот проект сейчас успешно развивается, в то время как eAccelerator остановился в своем развитии, а сайт его разработчиков перестал существовать. Есть только аккаунт на sourceforge с архивами. К тому же, по некоторым слухам, APC должен войти в стандартную поставку PHP6.
     
  12. lex_network

    lex_network

    Регистрация:
    6 мар 2013
    Сообщения:
    28
    Симпатии:
    6
    из акселераторов рекомендую использовать APC, либо memcached если памяти достаточно на сервере, этот вариант предпочтительнее будет особенно на нагруженных серверах
     
  13. web2us

    web2us

    Регистрация:
    10 мар 2013
    Сообщения:
    0
    Симпатии:
    0
    чем предпочтительней... арс и мемкэшед - два совершенно разных акселератора ... и используются под свои цели:Smile:
    ... тема не раскрыта