Как мы знаем, в пхп есть возможность кэшировать данны, для этого написаны следующие библиотеки.
Apc - считается неподдерживаемым, библиотека делала 2 вещи: компилировала php-код в байт-код и давала возможность работать с разделяемой памятью, сейчас вместо нее:
APCu - это APC без кеширования опкода (предоставляет возможность работать с разделяемой памятью).
OPcache - улучшает производительность PHP путём сохранения скомпилированного байт-кода скриптов в разделяемой памяти, тем самым избавляя PHP от необходимости загружать и анализировать скрипты при каждом запросе. PHP 5.5.0 и выше.
Итак, с теорией все понятно, теперь практика.
Возникло у меня предположение, что opcache может мне помочь с одним тяжелым запросом, вот и решил я измерить как себя ведет приложение:
time curl --insecure -i -L "http://yapro.local/customer/v2/login" -A "Guzzle/5.3.1 curl/7.49.1 PHP/5.6.23" \
-H "Content-Type: application/json" -X POST -d '{"phone":799912345678,"password":"123456"}'
С xdebug и без opcache:
3,831s
3,536s
3,165s
3,519s
3,388s
С xdebug и c opcache:
3,373s
2,841s
2,909s
2,803s
2,800s
С opcache и без xdebug:
2,837s
1,720s
1,795s
1,749s
1,494s
-- без opcache и без xdebug:
3,067s
1,860s
1,658s
1,443s
1,646s
Итак, делаю вывод, что opcache почти не помогает, а своевременно обновлять кэш придется (например при деплое новой версии приложения), поэтому пока opcache использовать не буду.
Обычно OPCache резолвит полный путь к скрипту. Но будьте осторожны, потому что он использует realpath_cache, а это может вам навредить. Если с помощью симлинка вы измените корневую папку, то присвойте opcache.revalidate_path значение 1 и очистите realpath cache (это может быть непросто выполнить, потому что кэш привязан к рабочему процессу, обрабатывающему текущий запрос).
Комментарии
Комментариев пока нет.