Я написал сценарий, который экспортирует данные из базы данных, а затем помещает их в файл XML. Скрипт работает в бесконечном цикле while с соответствующим оператором break (после выполнения задачи). Задача занимает 10 минут. Когда я делаю http-запрос для запуска задания, браузер, который я использую, полностью зависает - не только запрашивается URL-адрес, но и весь хост. В то же время с другими браузерами я могу просматривать веб-страницу, содержащую мой скрипт.После запуска скрипта браузер зависает. Другие браузеры работают
Отрывок из моего PHP скрипт:
while(true)
{
if($i === $z)
{
break;
}
foreach((array)$this->project as $project)
{
makeYourJob();
usleep(1000000);
$z++;
}
usleep(2000000);
}
Script вызывается с этим JQuery кода (я печатаю адрес HTML страницы, содержащей этот код):
$.get("cron.php");
Также я попытался ввести хрон .php в строке URL и зависании браузера. Почему браузер, запускающий скрипт, зависает? Как этого избежать?
EDIT: Создание простого запроса get/post от ajax или пользователя не решит проблему. Этот пост не дублируется. Вот решение:
exec("wget http://www.domain.com/scrip_name.php > /dev/null &");
Почему вы используете while (true), а не что-то вроде while ($ i! == $ z)? –
'while (true)' - theres ваша проблема. – Nick
Почему бы вам не запустить его как фактический cron-скрипт с панели управления и устранить настройку таймаута, чтобы браузер cron (если он использовался wget) запускал его, а не собственный браузер? –