Как я могу установить максимальное время выполнения для PHP-скрипта?

#php #apache #execution-time

#php #apache #время выполнения

Вопрос:

Я хотел бы изменить максимальное время выполнения для PHP-скрипта. В скрипте, который я пробовал

 ini_set("max_execution_time", "1000");
  

и

 set_time_limit(1000);
  

вместе и по отдельности.

Я также добавил эту строку в .htaccess:

 php_value max_execution_time 1000
  

в php.ini отключен безопасный режим, а на сервере Apache установлен флаг AllowOverride All . Что я должен сделать, чтобы сервер разрешил более длительное время выполнения?

Комментарии:

1. вы пробовали установить это прямо в файле php.ini?

2. AllowOverride в Apache не имеет ничего общего с настройками PHP.

3. br.php.net/manual/en/configuration.changes.php попробуйте установить и после получения значения проверить его…

4. Я забыл упомянуть, что я вставил php_value max_execution_time 1000 в .htaccess , поэтому я упомянул AllowOverride.

5. Вы отправляете запросы непосредственно в apache? У прокси может истечь время ожидания, даже если apache этого не делает. Что вы получите, если запустите var_dump(ini_get('max_execution_time'), ini_get('safe_mode')); после вашего вызова set_time_limit(1000); ?

Ответ №1:

Установка переменной в ini-файле работает для меня:

 max_execution_time = 1000;
  

set_time_limit () также должен работать, пока он не находится в безопасном режиме.

Ответ №2:

Если вы ищете директиву Apache2 для использования в .htaccess или конфигурации одного виртуального хостинга, вам, вероятно, понадобится php_admin_value:

 php_admin_value max_execution_time 1000
  

AFAIK это работает только с mod_php

Комментарии:

1. существует ли проблема безопасности, изменяющая эту директиву на виртуальном хосте?

2. Я бы так не думал. В принципе, есть разница между php_admin_value и php_value, последнее позволяет ini_set() изменять значение, первое — нет. смотрите ma.ttias.be /… . Возможно, вам стоит быть осторожным и не допускать длительного времени выполнения во всем виртуальном хостинге. Возможно, используйте его внутри тега <Location> для большей детализации.

3. Можете ли вы сказать мне, что написать, используя тег location?

4. Взгляните на httpd.apache.org/docs/current/mod/core.html#location

Ответ №3:

Примечание: Этот взлом предназначен только для запуска определенного скрипта в течение определенного времени.

Как правило, вам следует изменить настройки php.

Итак, во время выполнения вы можете установить

 set_time_limit($seconds); // 0 for unlimited
  

в начале скрипта.