Я создал скрипт, который извлекает контент XML из веб-сервиса. Процесс нужно запускать раз в неделю, но сам скрипт должен быть перезапущен примерно 180 раз, чтобы завершить процесс. Каждый запуск сценария занимает около 3-8 минут. Я хотел бы, чтобы он запускался через 5 секунд после каждого завершения.
Мое текущее решение для этого:
Проблема с этим решением состоит в том, что оно открывает новое окно браузера каждую неделю. Есть ли хорошие альтернативные способы сделать это без необходимости вручную закрывать браузер?
Причиной повторного запуска скрипта являются настройки тайм-аута скрипта максимального лимита php-сервера и возможность после каждого запуска видеть состояние, произошла ли какая-либо ошибка.
Я не использую cron, так как это потребовало бы сделать очень много опросов, чтобы запустить процесс в течение 5 секунд после последнего запуска. Для еженедельного запуска скрипта я предполагаю, что он не будет работать, пока скрипт использует javascript для повторного запуска?
<?php
// increase the maximum execution time to 43200 seconds (12 hours)
set_time_limit(43200);
function runTask() {
static $cycles = 0;
// do whatever you need to do
// Increments cycle count then compares against limit
if ($cycles++ < 180) {
sleep(5); // wait five seconds
runTask(); // run it again
}
}
runTask(); // fire up the loop
Или, если вы поклонник Javascript …
var cycles = 0;
function runTask() {
// do whatever you need to do
// Increments cycle count then compares against limit
if (cycles++ < 180) {
setTimeout(runTask, 5000); // run again in 5000 milliseconds
}
}
runTask(); // fire up the loop
Оба решения не будут запускать функцию снова в течение 5 секунд после каждой итерации.
Просто попросите вашего бегуна выполнить любой скрипт напрямую; нет необходимости в браузерах.
Других решений пока нет …