Как перезапустить скрипт или начать его выполнение с начала в фоновом режиме?
Здравствуйте! Есть такая задача, нужно перезапускать скрипт при выполнении определенных задач в фоновом режиме, если например пользователь закрыл страницу.
Я так понял, что нужно использовать ignore_user_abort
Сейчас использую для перезапуска: <meta http-equiv="refresh" content="0; url=/test">
Евгений Вольф, Пользователь запускает скрипт, потом если он закрыд страницу все равно выполнять пока не будет нужное условие. Сейчас хтмл скриптом перезапускаю, но для этого браузер должен быть открыт.
romaaa32, к сожалению, я не в курсе, что такое "хтмл скрипт", но любая программа, не только PHP-скрипт, будет работать до тех пор, пока его выполнение не дойдёт до последней строчки. Самый просто пример на PHP:
<?php
while(true) {
//тут код будет выполняться вечно, пока цикл не будет прерван
}
Такой цикл будет выполняться бесконечно, пока цикл не будет либо искусственно, либо пока не закончиться время отведенное PHP-скрипту на выполнение. По умолчанию это время равно 30 секундам, но Вы можете в php.ini (файл конфигурации PHP) выставить любое максимальное время выполнения скрипта, вплоть до бесконечности.
Если скрипт запустился по http - пусть и дальше выполняется. Он должен закончиться через несколько секунд (а длительные скрипты запускать по http - это ламерство) или сам умрет раньше при попытке вывода на экран.
Если же длительное задание отложено в очередь и уже началась его обработка в консоли, то можно определять факт закрытия страницы по факту разрыва соединения с сокет-сервером и им же отправлять событие в консольный скрипт.