Я получаю 504 сообщения с тайм-аутом от nginx, когда мой PHP-скрипт работает дольше обычного. set_time_limit(0)
, похоже, не мешает этому! Не работает ли он при запуске php5-fpm на nginx? Если да, то каков правильный способ установления лимита времени?
Ошибка:
504 Gateway Time-out nginx/1.2.7
Существует несколько способов установить тайм-аут для php-fpm. В /etc/php5/fpm/pool.d/www.conf
Я добавил эту строку:
request_terminate_timeout = 180
Кроме того, в /etc/nginx/sites-available/default
я добавил следующую строку в блок местоположения сервера:
fastcgi_read_timeout 180;
Весь блок местоположения выглядит следующим образом:
location ~ \.php$ { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_read_timeout 180; include fastcgi_params; }
Теперь просто перезапустите php-fpm и nginx, и не должно быть больше тайм-аутов для запросов, занимающих менее 180 секунд.
Попробуйте эту ссылку , у нее есть лучшее решение о том, как это исправить. Итак, шаги:
nginx.conf
расположенный в каталоге /etc/nginx
. Добавьте этот ниже фрагмент кода в разделе http {
section:
client_header_timeout 3000; client_body_timeout 3000; fastcgi_read_timeout 3000; client_max_body_size 32m; fastcgi_buffers 8 128k; fastcgi_buffer_size 128k;
Примечание. Если он уже присутствует, измените значения согласно.
Перезагрузите Nginx и php5-fpm.
$ service nginx reload $ service php5-fpm reload
Если ошибка повторяется, рассмотрите возможность увеличения значений.
Вы не можете использовать PHP для предотвращения тайм-аута, выпущенного nginx.
Чтобы настроить nginx, чтобы увеличить время, см. Директиву proxy_read_timeout
.
Правильный ответ увеличивает скорость fastcgi_read_timeout в вашей конфигурации Nginx.
Просто как тот!
Поскольку вы используете php-fpm, вы должны воспользоваться fastcgi_finish_request () для обработки запросов, которые, как вы знаете, могут занять больше времени.
Использование set_time_limit(0)
бесполезно при использовании php-fpm или аналогичного диспетчера процессов.
Нижняя линия не должна использовать set_time_limit
при использовании php-fpm
, чтобы увеличить время ожидания выполнения, проверьте этот учебник .
Вам нужно добавить дополнительную nginx.conf
nginx (для ngx_http_proxy_module
) в nginx.conf
, например:
proxy_read_timeout 300;
В основном директива nginx proxy_read_timeout
изменяет тайм-аут прокси-сервера, FcgidIOTimeout
для слишком тихих сценариев, а FcgidBusyTimeout
– для сценариев, которые слишком долго выполняются.
Также, если вы используете приложение FastCGI, увеличьте эти параметры:
FcgidBusyTimeout 300 FcgidIOTimeout 250
Затем перезагрузите nginx и PHP5-FPM.
В Plesk вы можете добавить его в настройки веб-сервера в разделе Дополнительные директивы nginx .
Для FastCGI проверьте настройки веб-сервера в разделе Дополнительные директивы для HTTP .
См.: Как исправить проблемы тайм-аута FastCGI в Plesk?
sudo nano /etc/nginx/nginx.conf
Добавьте эти переменные в файл nginx.conf:
proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600;
А затем перезапустите:
service nginx reload
Я решаю эту проблему с конфигурацией APACHE! Все методы (в этом разделе) неверны для меня … Затем я пытаюсь chanche apache config:
Timeout 3600
Тогда мой скрипт работал!