Предотвращение тайм-аута шлюза nginx 504 с помощью PHP set_time_limit ()

Я получаю 504 сообщения с тайм-аутом от nginx, когда мой PHP-скрипт работает дольше обычного. set_time_limit(0) , похоже, не мешает этому! Не работает ли он при запуске php5-fpm на nginx? Если да, то каков правильный способ установления лимита времени?

Ошибка:

 504 Gateway Time-out nginx/1.2.7 

Related of "Предотвращение тайм-аута шлюза nginx 504 с помощью PHP set_time_limit ()"

Существует несколько способов установить тайм-аут для 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 секунд.

Попробуйте эту ссылку , у нее есть лучшее решение о том, как это исправить. Итак, шаги:

  1. Откройте файл nginx.conf расположенный в каталоге /etc/nginx .
  2. Добавьте этот ниже фрагмент кода в разделе 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; 

    Примечание. Если он уже присутствует, измените значения согласно.

  3. Перезагрузите 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

В 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

Тогда мой скрипт работал!