【发布时间】:2017-03-08 03:18:10
【问题描述】:
每 60 秒,我想执行一些其他的例程。在此活动期间,如果由于任何原因断开连接,我也希望借此机会重新建立连接。这如何实现?
<?php
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
socket_bind($sock, "123.321.123.321" , 20);
socket_listen ($sock , 10);
while (true)
{
//Do some other routine ever 60 seconds
$client = socket_accept($sock); //Blocking function!
$input = socket_read($client, 1024000);
$response=processInput($input);
socket_write($client, $response);
}
【问题讨论】:
-
@Revent 谢谢。它没有解决超时问题,但它确实解决了识别通信何时丢失的问题。也许只有两个独立的程序?一个 60 秒的循环(或 cron 或其他),第二个与我展示的类似?
-
这是一篇关于该主题的帖子,但我不确定这对您的具体情况有多大用处:stackoverflow.com/questions/8310487/start-and-stop-a-timer-php。如果我站在你的立场上,我会考虑将侦听器作为守护进程或其他东西运行。
-
再次感谢 Revent,是的,看起来不太合适。我知道这是题外话,但是您介意指出我正确的方向如何将侦听器作为守护程序运行吗?这似乎是要走的路,但我不知道从哪里开始。