Как запустить скрипт php в фоновом режиме? - PullRequest
1 голос
/ 10 декабря 2011

У меня есть скрипт, давайте назовем его linkchecker, который просматривает около 10.000 URL-адресов, проверяя их на наличие http-кодов состояния.Когда они проверены, URL помечается как проверенный в моей БД.Он не будет ничего выводить, пока не будет готово, что может занять много часов.

Поэтому я подумал о том, чтобы просто иметь другой скрипт, который будет запускать проверку ссылок в фоновом режиме, постоянно опрашивая БД о том, сколько URL проверено,Я могу следить за ходом выполнения, и если какие-либо URL-адреса приводят к проблемам с длительным временем соединения и т. Д.

Я попытался просто запустить средство проверки ссылок в iframe, но ничего не загрузится, пока проверка ссылок не завершится.*

Как я могу выполнить эту проверку ссылок в фоновом режиме, когда основной скрипт работает нормально, выполняя другие задачи?

Ответы [ 3 ]

2 голосов
/ 10 декабря 2011

Вам нужно установить задание cron (если вы работаете в Linux), которое выполняет команду curl для доступа к сценарию PHP (внешнему, например, 'curl http://domain.com/php/something.php') или просто к выполнению php команда, указывающая на внутренний файл.

Вы можете создать планировщик , который выполняется каждую минуту (это минимальное время выполнения, поддерживаемое заданием cron) и выполняет блок "вашей работы. Конечно, вы должны установить PHP, чтобы пропустить 30-секундный предел выполнения, используемый по умолчанию.

0 голосов
/ 10 декабря 2011

Я предлагаю сделать запрос AJAX на новую страницу, назовем его ajaxChecker.php

На этой странице просто посмотрите, есть ли непроверенные URL (номер возврата) Если число непроверенных равно нулю, отобразите вывод в новом div

function checker()
{
    $.post('ajaxChecker.php',function(data){
    if(data.length > 0)
    $('#result').html(data); 
    });
}

setInterval( "checker()", 10000 );

И, конечно, сделайте запрос через ajax или cron, чтобы запустить его сначала

0 голосов
/ 10 декабря 2011

В БД сделайте столбец, который вы называете «Проверено». Просто сделайте обновление PHP-скрипта, который проверяется в базе данных. Используйте phpMyAdmin для графического просмотра базы данных, просто выберите сортировку после столбца «Проверено», и тогда вы сможете увидеть, как далеко она зашла.

Вы должны сделать это таким образом, потому что веб-страница не будет обновляться, пока не будет выполнен скрипт. Однако вы можете заставить скрипт запускать другой скрипт, который говорит о том, как далеко продвигается процесс, но это может быть слишком трудоемким?

Вам также нужно зайти в php.ini, чтобы проверить, что max_execution_time установлено на несколько часов. 60 * 60 * 24 = 1 день = 86 400 секунд.

Надеюсь, это поможет! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...