Ответы:
Есть несколько способов установить тайм-аут для 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 секунд.
fastcgi_read_timeout
в этом location
блоке, он все равно отключается через 60 секунд.
location
блоке, который обрабатывает скрипты php, а не в docroot.
Попробуйте эту ссылку , у нее есть лучшее решение, как это исправить. Итак, шаги следующие:
nginx.conf
файл, расположенный в /etc/nginx
каталоге.Добавьте этот фрагмент кода ниже в http {
раздел:
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
Если ошибка повторяется, подумайте об увеличении значений.
/etc/nginx/sites-available/mysite.com
.
Вы не можете использовать PHP для предотвращения тайм-аута, выдаваемого nginx.
Чтобы настроить nginx на дополнительное время, см. proxy_read_timeout
Директиву .
В этом случае могут возникнуть три типа тайм-аутов. Видно, что каждый ответ сосредоточен только на одном аспекте этих возможностей. Итак, я решил записать это, чтобы кому-то, кто посетит здесь в будущем, не нужно было случайным образом проверять каждый ответ и получать успех, не зная, какой из них сработал.
Итак, исправления для каждой проблемы следующие.
$.ajax({
url: "test.html",
error: function(){
// will fire when timeout is reached
},
success: function(){
//do something
},
timeout: 3000 // sets timeout to 3 seconds
});
Тайм-аут клиента nginx
http{
#in seconds
fastcgi_read_timeout 600;
client_header_timeout 600;
client_body_timeout 600;
}
Тайм-аут прокси-сервера nginx
http{
#Time to wait for the replying server
proxy_read_timeout 600s;
}
Так что используйте тот, который вам нужен. Может быть, в некоторых случаях вам понадобятся все эти конфигурации. Мне было нужно.
Вам нужно добавить дополнительную директиву nginx (для ngx_http_proxy_module
) nginx.conf
, например:
proxy_read_timeout 300;
В основном proxy_read_timeout
директива nginx изменяет тайм-аут прокси, FcgidIOTimeout
это для скриптов, которые слишком долго тихие, иFcgidBusyTimeout
для сценариев, выполнение которых занимает слишком много времени.
Также, если вы используете приложение FastCGI, также увеличьте эти параметры:
FcgidBusyTimeout 300
FcgidIOTimeout 250
Затем перезагрузите nginx и PHP5-FPM.
В панели управления Plesk, вы можете добавить его в настройках веб - сервера под дополнительные директивы Nginx .
Для проверки FastCGI в настройках веб - сервера под дополнительные директивы для HTTP .
FcgidBusyTimeout
переменная не существует только для Apache?
С помощью set_time_limit(0)
бесполезно при использовании php-fpm или подобного диспетчера процессов.
Нижняя строка не используется set_time_limit
при использовании php-fpm
, чтобы увеличить время ожидания выполнения, проверьте это руководство .
Решаю эту проблему конфигом APACHE! Все методы (в этой теме) мне некорректны ... Потом пробую chanche apache config:
Timeout 3600
Тогда мой сценарий заработал!