Нашел ответ по адресу: https://stackoverflow.com/questions/598444/how-to-share-apc-cache-between-several-php-processes-when- running-under-fastcgi / 1094068 # 1094068
Проблема не в PHP, а в mod_fcgid. В то время как PHP порождает несколько дочерних элементов, mod_fcgid
не знает об этом и будет обслуживать один запрос для каждого ребенка. Следовательно, когда используется FcgidMaxProcessesPerClass 1
, все исполнения PHP происходят друг за другом. *
Решение представлено на
который ссылается на: http://www.brandonturner.net/blog/2009/07/fastcgi_with_php_opcode_cache/ объясняет, как использовать mod_fastcgi
, который не имеет этого ограничения. Он отправит несколько запросов одному и тому же дочернему элементу.
[*] Обратите внимание, что неиспользование FcgidMaxProcessesPerClass 1
приводит к появлению множества отдельных экземпляров PHP, ruby и т. Д., Хотя все они способны обрабатывать множество запросов внутри одного процесса.
Следовательно, новая конфигурация Apache для использования PHP с fastcgi:
<IfModule mod_fastcgi.c>
# Needed for for suEXEC: FastCgiWrapper On
FastCgiConfig -idle-timeout 20 -maxClassProcesses 1 -initial-env RAILS_ENV=production
FastCgiIpcDir /var/lib/apache2/fastcgi
AddHandler php5-fcgi .php
Action php5-fcgi /.fcgi-bin/php5-wrapper.sh
DirectoryIndex index.php
ScriptAlias /.fcgi-bin/ /srv/www/cgi-bin/
<Location "/.fcgi-bin/php5-wrapper.sh">
Order Deny,Allow
Deny from All
#Allow from all
Allow from env=REDIRECT_STATUS
Options ExecCGI
SetHandler fastcgi-script
</Location>
# Startup PHP directly
FastCgiServer /srv/www/cgi-bin/php5-wrapper.sh
# Support dynamic startup
AddHandler fastcgi-script fcg fcgi fpl
</IfModule>
Во-первых, ваш сценарий оболочки и настройка плохо спланированы, если только не документы Apache устарели. Прочтите «Особые соображения по PHP» в документации mod_fcgid и используйте там скрипт и пример настроек. Ваша текущая настройка в основном порождает кучу непригодных для использования дочерних процессов php, тогда каждый 5001-й запрос PHP будет вызывать ошибку, так как PHP выйдет после 5000-го запроса,