2013-04-25 3 views
0

Я написал сценарий, который экспортирует данные из базы данных, а затем помещает их в файл 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 &"); 
+1

Почему вы используете while (true), а не что-то вроде while ($ i! == $ z)? –

+0

'while (true)' - theres ваша проблема. – Nick

+0

Почему бы вам не запустить его как фактический cron-скрипт с панели управления и устранить настройку таймаута, чтобы браузер cron (если он использовался wget) запускал его, а не собственный браузер? –

ответ

0

Очевидно, что оператор if, который разбивает бесконечный цикл, не вызывается.

Можете ли вы проверить значения инициализации $ i и $ z? Кроме того, === проверяет, имеют ли 2 переменные одного типа И того же значения. Я предлагаю вам проверить тип переменных $ i и $ z.

+0

Это всего лишь фрагмент. $ i - int и устанавливается в 0. Если утверждение верно. –

Смежные вопросы