Единственный php-fastcgi обрабатывает блоки все другие запросы PHP

Да, это называют "Управляемым хостингом". Если это имеет значение мы используем Rackspace.

6
задан 21 August 2011 в 18:45
2 ответа

Нашел ответ по адресу: 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>
3
ответ дан 3 December 2019 в 00:36

Во-первых, ваш сценарий оболочки и настройка плохо спланированы, если только не документы Apache устарели. Прочтите «Особые соображения по PHP» в документации mod_fcgid и используйте там скрипт и пример настроек. Ваша текущая настройка в основном порождает кучу непригодных для использования дочерних процессов php, тогда каждый 5001-й запрос PHP будет вызывать ошибку, так как PHP выйдет после 5000-го запроса,

1
ответ дан 3 December 2019 в 00:36

Теги

Похожие вопросы