Почему OPcache PHP 5.5 показывает ноль попаданий? suPHP виноват?

Расширение OPcache для PHP 5.5 включено на моем (общем) веб-хостинге, но по какой-то причине оно всегда сообщает «0 совпадений» в статистике. Может ли это быть связано с тем, что он несовместим с suPHP?

Или у кого-нибудь есть другие предложения относительно того, почему 0 попаданий в кеш?

введите здесь описание изображения


person Simon East    schedule 13.03.2014    source источник


Ответы (2)


OPcache можно тривиально включить для CLI и базового GCI, но если процесс PHP не будет сохраняться при нескольких запросах, вы увидите попадания в кеш только в надуманных сценариях, например. когда один и тот же скрипт компилируется несколько раз в одном и том же запросе. (Я говорю надуманный, потому что такой сценарий не может определять объекты глобального пространства имен, такие как классы или функции, потому что вторая и последующие компиляции завершатся ошибкой.)

В большинстве конфигураций общего хостинга системные администраторы настраивают PHP как одноразовое выполнение php-cgi, то есть образ PHP инициируется для каждого запроса в UID размещенной учетной записи. Это имеет преимущества простоты и безопасности. Это также имеет недостатки, заключающиеся в низкой производительности, поскольку накладные расходы на запуск образа PHP возникают для каждого запроса, а поскольку SMA, созданный mmap, отбрасывается при завершении работы образа, любые скомпилированные сценарии не сохраняются от запроса к запросу.

Чтобы OPcache работал, вам нужны процессы PHP, которые будут сохраняться в течение всплеска запросов. Некоторые шаблоны mod_fcgid поддерживают это, но без дополнительных подробностей о вашей конфигурации я не могу дать вам дальнейшие указания. Извиняюсь.

person TerryE    schedule 16.03.2014

Мне сказали, что, к сожалению, расширение opcache в настоящее время не совместимо с suPHP.

SuEXEC LiteSpeed ​​может поддерживать кэширование кода операции, но только в режимах 'демон' или 'группа процессов', а не в стандартном режим «рабочий» (см. их объяснение здесь).

Таким образом, даже если вы можете включить opcache в cPanel или через INI, вы не получите попадания в кеш, потому что процесс PHP завершается и ОЗУ освобождается. Похоже, мне пока не повезло.

person Simon East    schedule 25.03.2014
comment
@Prateek. Судя по тому небольшому исследованию, которое я провел, для кэширования операций требуется постоянный процесс для хранения кеша в ОЗУ. Поэтому вам нужно либо использовать что-то вроде mod_php (с Apache), PHP-FPM, FastCGI или что-то подобное. Я не думаю, что прямой CGI поддерживает постоянный процесс, поэтому может не работать. - person Simon East; 29.07.2014
comment
Хорошо, поэтому я перешел на FCGI, чтобы работать с opcache. И да, это работает, спасибо @Simon - person Prateek; 30.07.2014