PHP套接字编程 - 轮询与中断

时间:2011-08-25 22:37:16

标签: php

我是Socket编程的新手。我正在客户端机器上编写一个应用程序来偶尔发出一些数据请求或发送一些数据。这种交换将定期进行,每月最多一次或两次。从我一直在进行套接字编程的研究中,我需要一个执行永无止境的脚本。本能地我认为这会不必要地消耗这种频繁使用的资源,但PHP没有中断机制。理想的脚本将无所事事,只有当通过端口进行通信时,脚本才会唤醒并执行。其他语言中的这将通过中断来完成。

有人可以提出一种解决这个问题的方法吗?

由于 约翰

3 个答案:

答案 0 :(得分:1)

您可以使用socket_selectnull第四个参数使脚本无限期地进入睡眠状态,并在要读取的套接字上有数据时将其唤醒。

另一种效率较低的方法是轮询,睡眠n分钟,再次轮询,等等。

答案 1 :(得分:0)

您可以尝试组合方法。编写PHP脚本,以便轮询/等待有限的时间,并使用调度程序在特定时间运行,例如每15分钟运行一次。我写了一个非常简单的套接字程序来与医疗设备交谈。它不需要占用大量资源来坐下来等待,但如果你担心,你可以限制上述技术。

答案 2 :(得分:0)

约翰,

在你的问题中,你提到这个可能的交易最多每月发生一次或两次。您是否考虑在客户端使用cron(或等效的Windows)。也许每小时运行一次检查?

由于数据非常罕见,因此非常依赖时间吗?