2011-08-25 55 views
0

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

任何人都可以提出一种方法,我可以解决这个问题吗?

感谢 约翰

回答

0

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

+0

谢谢,这可能是一种做法。我会给它一个裂缝。这听起来有点浪费资源! – user505988

1

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

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

0

约翰,

在你的问题,你提到这个可能的交易将发生在至多一个或每月两次。你有没有考虑过在客户端使用cron(或者等价的窗口)。也许每小时运行一次检查一次?

由于数据非常少见,它非常依赖时间?

+0

不应该作为评论发布吗?这不是一个真正的答案。 –

+0

嗨,谢谢我试图让它更具问题风格,但尽可能多地提供周围的信息/思考过程。 – user505988