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


PHP Socket Programming - polling versus Interrupt

我是Socket编程新手。我正在客户端机器上编写一个应用程序,偶尔请求一些数据或发送一些数据。这种交流将定期和不频繁地进行,最多一个月一次或两次。从我对套接字编程的研究来看,我需要一个永不结束执行的脚本。我本能地认为,对于这种不经常使用的情况,这将不必要地消耗资源,但是PHP没有中断机制。理想的脚本应该坐在那里不做任何事情,只有当通过端口进行通信时,脚本才会被唤醒并执行。在其他语言中,这将通过中断来完成。

谁能提出一个解决这个问题的方法?

谢谢约翰。

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

另一种效率较低的方法是轮询,睡n分钟,再轮询,以此类推。

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

约翰,

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

由于数据是如此罕见,它是否非常依赖于时间?