0

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

4

1 回答 1

0

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

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

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


注意: PHP pcntl 不适用于 Windows(请参见此处。)

于 2013-08-07T19:55:30.057 回答