dead_code
является символом lint, что означает, что вы можете allow
на то, что вызывает его.
#[allow(dead_code)]
fn dummy() {}
fn main() {}
Ну, можно использовать" ignore_user_abort (верный)"
, Таким образом, сценарий продолжит работать (следите за продолжительностью сценария, возможно, добавьте" set_time_limit (0)")
, Но предупреждение здесь: Вы не будете в состоянии остановить сценарий с этими двумя строками:
ignore_user_abort(true);
set_time_limit(0);
Кроме Вас может непосредственно получить доступ к серверу и уничтожить процесс там! (Там, сделанный бесконечный цикл, называя себя много раз, заставил сервер прибыть в визжащую остановку, на кричали...)
Кажется, что у Вас должны быть очередь и внешний сценарий для обработки очереди.
, Например, Ваш Сценарий PHP должен поместить запись в таблицу базы данных и возврат сразу же. Затем крон, работающий каждую минуту, проверяет очередь и разветвляет процесс для каждого задания.
преимущество здесь состоит в том, что Вы не запираете апачский поток в течение 10 минут.
У меня было много проблем с этим видом процесса под окнами; Моя ситуация немного отличалась в этом, я не заботился об ответе "сценария" - я хотел, чтобы сценарий запустил и позволил другим запросам страницы проходить, в то время как это было занято, работая далеко.
По некоторым причинам; у меня были проблемы с ним или зависание других запросов или таймаут приблизительно после 60 секунд (и апач и php, были установлены испытать таймаут приблизительно после 20 минут); также оказывается, что Firefox испытывает таймаут после 5 минут (по умолчанию) так или иначе поэтому после той точки Вы не можете знать то, что продолжается через браузер, не изменяя настройки в Firefox.
я закончил тем, что использовал открытый процесс и процесс близкие методы для открытия php в cli режиме как так:
pclose(popen("start php myscript.php", "r"));
Это было бы (использование запуститься), открывают процесс php и затем уничтожают процесс запуска, уезжая php работающий за однако долго, этому было нужно - снова необходимо будет уничтожить процесс для ручного завершения работы его. Этому не были нужны Вы для установки любого времени outs, и Вы могли позволить текущей странице, которая звонила, это продолжает и произвело еще некоторые детали.
единственная проблема с этим - то, что, если бы необходимо отправить сценарию какие-либо данные, Вы или сделали бы это через другой источник или передали бы его вдоль "командной строки" как параметры; который не так безопасен.
Работавший приятно для того, в чем мы нуждались, хотя и удостоверяется, сценарий всегда запускается и позволяется работать без любых прерываний.
Это может быть полезным, также: Асинхронное должностное лицо оболочки в PHP
Я думаю, что команда shell_exec - то, что Вы ищете.
Однако это, отключает в безопасном режиме.
ручная статья PHP об этом здесь: http://php.net/shell_exec
существует статья об этом здесь: http://nsaunders.wordpress.com/2007/01/12/running-a-background-process-in-php/
Существует другая опция, которая можно использовать, выполнить сценарий CLI... Это будет работать в фоновом режиме, и можно даже выполнить его как cronjob, если Вы хотите.
, например,
> #!/usr/bin/php -q
<?php
//process logs
?>
Это может быть установкой как cronjob и выполнит без ограничения времени.... это, примеры для основанной на Unix операционной системы все же.
к вашему сведению у меня есть сценарий PHP, работающий с бесконечным циклом, который делает некоторую обработку и работал в течение прошлых 3 месяцев не, останавливаются.
Вы могли использовать ignore_user_abort()
- тот способ, которым сценарий продолжит работать, даже если Вы закроете свой браузер или перейдете к различной странице.