Сценарии PHP Sockets истекают через 3 часа - PullRequest
0 голосов
/ 07 февраля 2012

Я запускаю PHP-скрипт, который прослушивает пакеты данных, отправляемые в сокет. Эта версия довольно сырая и работает в непрерывном цикле с использованием следующего кода:

set_time_limit(0);
while(TRUE) 
{
   //read port and do something
}

Это работает нормально, но я заметил, что мы должны перезапускать скрипт автоматически каждые три часа.

set_time_limit (0) должен позволять сценарию работать бесконечно - есть ли общий параметр PHP, который означает, что сценарии будут автоматически завершаться через 3 часа?

Ответы [ 3 ]

1 голос
/ 07 февраля 2012

Насколько я знаю, в PHP нет такой настройки.В чем может быть проблема - временная потеря соединения.

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

Что касается комментария @ Salman, то разница состоит в том, что в командной строке не включены различные директивы по умолчанию, самое важное - set_time_limit (0).Это означает, что сценарии командной строки могут выполняться неопределенно по умолчанию.

Есть ли еще какие-то детали для работы?

0 голосов
/ 19 октября 2015
$start_time_increment =  strtotime("7.00am");
$end_time_increment =  strtotime("10.00pm");

for ($date = $start_time_increment; $date <=$end_time_increment; $date = strtotime("+3 hours",$date)) **{**
    echo date(" h:i:a",$date)."<br />";
}
0 голосов
/ 10 февраля 2012

Согласно этому 9-летнему сообщению: https://bugs.php.net/bug.php?id=29560 В сокетах есть ошибка, которая приводит к утечке памяти. Вместо этого использовался stream_socket_server.

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