Время выполнения PHP в Apache - PullRequest
       25

Время выполнения PHP в Apache

1 голос
/ 15 октября 2010

Я хочу запустить файл / функцию PHP, которая не остановится, пока не завершит свою работу.Есть ли какая-либо опция для этого?

(Он не будет печатать какую-либо информацию в браузере, он будет производить вычисления и сохранять их в базе данных.

Примечание.мой компьютер.

Ответы [ 4 ]

4 голосов
/ 15 октября 2010

Выезд, http://php.net/manual/en/function.ignore-user-abort.php

однако при перезапуске apache он будет сброшен.

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

3 голосов
/ 15 октября 2010

PHP обычно имеет ограничение по времени выполнения, и длительные запросы будут удерживать HTTP-соединение.

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

Вот хорошее руководство от IBM , в котором подробно описывается метод cron с таблицами MySQL и кодом PHP. Другими вариантами являются системы обмена сообщениями / очереди, а не база данных.

1 голос
/ 15 октября 2010

поместите это утверждение вверху скрипта:

set_time_limit(0);

Это заставит скрипт работать бесконечно.

0 голосов
/ 15 октября 2010

Если вы работаете в Windows (если вы это делаете), вы можете использовать объект WindowsShell для выполнения сценария. Это запустит скрипт в фоновом режиме, не открывая окно команд на рабочем столе.

$shell = new COM("WScript.Shell"); 
$cmd = $WshShell->Run("c:\php\cli\php.exe c:\yourscript.php", 0, false);

В CLI-версии PHP скрипты не имеют максимального времени выполнения.

Если вам просто нужно запустить скрипт PHP и вам не нужно проходить через веб-браузер, просто запустите скрипт напрямую, используя версию PHP для CLI.

Если вы работаете в системе UNIX, используйте exec (). Та же идея.

...