Скрипт не завершает работу по таймауту

263
02 августа 2017, 22:25

Столкнулся с проблемой при работе скрипта. В настройках php.ini:

max_execution_time = 30

Но скрипт продолжает работать даже через пять минут, но и не виснет - работает до победы (без бесконечных циклов, просто долго рабоатет). Ясное дело, в скрипте директивы не переписаны. Вопрос: где ещё посмотреть, чтобы скрипт завершал работу в положенный ему срок, а не засорял ресурсы?

php 5.6.30, Red Hat 4.8.5-11

Answer 1

http://php.net/manual/ru/function.set-time-limit.php

1) Внимание Эта функция не работает, если PHP работает в безопасном режиме (безопасный режим). Обойти это ограничение можно только выключив безопасный режим или изменив значение настройки в php.ini.

2) Замечание: Функция set_time_limit() и директива max_execution_time влияют на время выполнения только самого скрипта. Время затраченное на различные действия вне скрипта, такие как системные вызовы функции system(), потоковые операции, запросы к базам данных и т.п. не включаются в расчет времени выполнения скрипта. Это не относится к Windows системам, где расчитывается абсолютное время выполнения.

3) Создай пустую страничку и выведи phpinfo(); - посмотри переписывается ли значение. Возможно переписывается в .htaccess

Answer 2

У вас есть внутри что-то типа цикла или каких-то отметок, итераций? Добавьте $time1 в начало скрипта остальной код в каждую итерацию.

$time1 = microtime(true);
$time2 = microtime(true);
$time3 = $time2-$time1;
if($time3 > 30){
  exit('время вышло');
}
READ ALSO
PHP 7 Fatal error: Call to undefined function mysqli_connect()

PHP 7 Fatal error: Call to undefined function mysqli_connect()

php скрипт, запускаю на системе ubuntu, стоит php7, при попытке запуска скрипта командой php scriptphp выдает ошибку

324
Вывод данных из массива

Вывод данных из массива

Здравствуйте, есть массив, этим кодом из него выводятся данные, но мне нужны только Имя и фамилия , как вывести только эти параметры?

229
password_verify не правильно работает

password_verify не правильно работает

пишу логин где нет с БДпишет no akk (логин нет на БД) пишу логин и не правильно пароль где на БД

249