На любом сервере настраивается ограниченный временной промежуток, в течение которого должен быть обработан запрос. Например, если временное ограничение 30 секунд, значит, запрос магазину X-Cart может занимать не более 30 секунд. Если запрос не выполнен в течение 30 секунд, он терминируется. Это не проблема для простых запросов, например, открыть страницу товара или авторизоваться в системе. Но это может стать проблемой для объемных процессов, таких как импорт товаров или перестройка кеша.

В таких случаях, X-Cart 5 пытается изменить серверное ограничение посредством функции set_time_limit(), чтобы запросы могли обрабатываться дольше. Но конфигурация многих серверов не позволяет X-Cart сделать такое изменение. Данная статься рассказывает, как настроить сервер, чтобы продлить время обработки запросов.

Есть несколько вариантов настройки сервера, при которой невозможно изменить временное ограничение через set_time_limit(). Мы рассмотрим разные способы настройки, которые приводят к блокировке по времени, и выясним, каким образом можно установить 300-секундный временной лимит. Вы можете сделать соответствующие изменения самостоятельно или попросить своего хостинг провайдера.

Apache + mod_fcgid

Установите значение 300 для следующих параметров в файле mod_fcgid config (обычно, это файл /etc/httpd/conf.d/fcgid.conf) и перезапустите веб-сервер:

  • FcgidBusyTimeout
  • FcgidConnectTimeout
  • FcgidIdleTimeout
  • FcgidIOTimeout
  • FcgidProcessLifeTime

В этой статье вы найдете информацию о mod_fcgid.

mod_fastcgi + php-fpm

Установите значение 300 для параметра request_terminate_timeout в файле php-fpm.conf и перезапустите веб-сервер.

В этой статье вы найдете информацию о php-fpm.

Nginx в качестве прокси

Попробуйте добавить опцию proxy_read_timeout в конфигурацию виртуального хоста, например:

proxy_read_timeout 300;

Nginx как автономный сервер с php-fpm

Попробуйте добавить опцию fastcgi_read_timeout в конфигурацию php-fpm, например:

fastcgi_read_timeout 300;