如何在PHP中实现多线程连接

时间:2013-08-07 19:43:52

标签: php multithreading

我有一个用PHP开发的应用程序。在我的应用程序中,我有数百个记录系统。每隔15分钟,我需要连接到所有系统以跟踪其状态(如CPU使用情况),并将它们返回到我的网页。 现在的问题是代码连接到每个系统并逐个执行查询命令,这使得程序真的很慢。目前,跟踪所有系统状态需要超过15分钟,这意味着,在第二个15分钟,它甚至还没有完成第一次查询。 有没有办法在PHP中并行连接系统?例如,使用一个线程ssh到前10个系统,同时使用另一个线程ssh到另外10个系统。 感谢。

1 个答案:

答案 0 :(得分:0)

将系统的连接信息(主机名或IP地址)放在一个数组中,然后循环遍历它们,并为每个系统fork。分叉后,执行对系统的查询。每个查询都将在新线程中发生,与所有其他查询异步运行。 Wait让分叉的孩子完成他们的工作,然后退出脚本。

这比同步运行每个查询更快批次,因为在继续下一个查询之前不必等待每个响应。

根据您的服务器规格和远程系统的数量,您可能希望限制创建的线程数量。


注意: PHP pcntl不适用于Windows(see here。)