2013-04-11 4 views
0

Я хочу иметь push-соединение с моим клиентом. Он должен быть уведомлен, если в файле содержится слово true. Это отлично работает со следующим скриптом, но я всегда получаю сообщение об ошибке через 50 секунд. Вы видите эту ошибку ниже.Endless Loop в скрипте PHP возвращает ошибку

Как исправить эту ошибку?

<?php 
    set_time_limit(3600); 
    $content =""; 
    while($content!="true"){ 
     sleep(1); 
     $content = file_get_contents("test.txt"); 
    } 
    echo "now"; 

?> 

«И вот результат Браузера через 50 секунд.

Internal Server Error 

The server encountered an internal error or misconfiguration and was unable to complete your request. 

Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error. 

More information about this error may be available in the server error log. 

Моя конфигурация апач:

# 
# Timeout: The number of seconds before receives and sends time out. 
# 
Timeout 3600 

# 
# KeepAlive: Whether or not to allow persistent connections (more than 
# one request per connection). Set to "Off" to deactivate. 
# 
KeepAlive On 

# 
# MaxKeepAliveRequests: The maximum number of requests to allow 
# during a persistent connection. Set to 0 to allow an unlimited amount. 
# We recommend you leave this number high, for maximum performance. 
# 
MaxKeepAliveRequests 0 

# 
# KeepAliveTimeout: Number of seconds to wait for the next request from the 
# same client on the same connection. 
# 
KeepAliveTimeout 5 
+0

Что находится в журнале Apache? – rkosegi

+0

В эту тему нет:/ – bbholzbb

+0

Что происходит, если вы эхо контента test.txt? – bestprogrammerintheworld

ответ

0

Поиск max_execution_time в вашем php.ini

+0

нет, это не помогает. Такая же ошибка снова! – bbholzbb

0

Пожалуйста, не то, что file_get_contents() возвращает строку файла целиком.

while-loop итерации до тех пор, пока $ content не равен только строка "true". Если у вас есть файл, который возвращает содержимое «true» только после этого, он выйдет из цикла, иначе нет.

Я предполагаю, что вы пытаетесь сделать что-то вроде этого:

<?php 
    $content =""; 
    while(!strstr($content,"true")) { 
     sleep(1); 
     $content = file_get_contents("test.txt"); 
    } 
    echo "now"; 

?> 

код не делает ничего кроме создания unnessecary цикла для проверки строки внутри файла.

0

Увеличение значения max_execution_time в php.ini & В Apache существует параметр max_input_time, определяющий, сколько времени они будут ждать сообщений, независимо от их размера. Если это время закончится, соединение будет закрыто, даже не коснувшись php.

0

Файл получает содержимое возвращает все в 1 строке. Я думаю, что то, что вы хотите сделать, - это цикл через строки и поиск, если в этой строке найдено «истина», найдите местоположение true и затем верните все до этого?