У меня есть запрос на обновление, выполняемый задачей cron, которая отключается. Запрос занимает в среднем пять минут для выполнения при выполнении в navicat.
Код выглядит примерно так. Это довольно просто:
// $db is a mysqli link set_time_limit (0); // should keep the script from timing out $query = "SLOW QUERY"; $result = $db->query($query); if (!$result) echo "error";
Несмотря на то, что сценарий не должен таймаутировать, время ожидания ожидания вызова sql по-прежнему, по-видимому, зависит от тайм-аута.
Есть ли асинхронный вызов, который можно использовать? Или настроить таймаут?
Является ли тайм-аут другим, потому что он вызывается из командной строки, а не через Apache?
благодаря
У меня была такая же проблема, как и где-то, и «решил» ее с помощью следующего кода (первые две строки моего файла):
set_time_limit(0); ignore_user_abort(1);
Согласно руководству :
Примечание . Функция set_time_limit () и директива конфигурации max_execution_time влияют только на время выполнения самого скрипта. Любое время, затрачиваемое на активность, которое происходит вне выполнения сценария, например системные вызовы с использованием system (), потоковые операции, запросы к базе данных и т. Д., Не включается при определении максимального времени выполнения сценария.
Поэтому вряд ли это связано с временными ограничениями PHP. Какое сообщение вы получаете, когда время истекает? Возможно, есть настройка MySQL.
Ваш php работает в безопасном режиме? Цитата из руководства PHP по set_time_limit :
Эта функция не действует, когда PHP работает в безопасном режиме. Обходного пути нет, кроме отключения безопасного режима или изменения временного ограничения в php.ini.
Предполагая, что вы работаете в Linux, системы на базе Debian имеют отдельные конфигурации для mod_php / php cgi и php-cli. Это не должно быть слишком сложно настроить в другой системе Linux, которая не разделяет конфигурацию cgi / cli.
Если у вас есть отдельные конфиги, я бы скорректировал вашу конфигурацию php cli. Отключить безопасный режим и любые ограничения по времени и пределы помех.
Проверьте некоторые из предельных переменных ресурса в php, ini: max_execution_time, max_input_time, memory_limit
Вы также можете установить лимит времени для скрипта в самом PHP: http://ca3.php.net/set_time_limit