与PHP守护进程交谈

时间:2012-03-15 05:27:28

标签: php daemon

我正在开发一个php中的小型服务器守护进程,它将与各种远程客户端进行通信 - 这很简单。但是,在同一台机器上运行的另一个守护进程需要尽可能快地与第一台进行通信,但可能会不断地发送数百KB的数据(希望在20 HTZ内)。我非常肯定我会想在这两个守护进程之间使用tcp连接,但这就是我需要一些建议的地方。在你问之前,我不能简单地将两者结合到同一个守护进程中的原因是因为第二个可以并且将用多种语言之一编写,包括java,.net,c ++,python,ruby等。如果有办法的话让PHP与另一种语言交谈而不使用tcp连接(或者使用不适合我需要的系统调用)并且不牺牲性能,我很满意,但我一直在寻找一种方法来做到这一点,我真的找不到干净,简单的方法 - 至少不是“一刀切”的方式。

2 个答案:

答案 0 :(得分:2)

由于其他进程将在同一台机器上,如何使用proc_open(),那么你只需要创建管道(stdin / stdout等)来编写/读取?

它类似于system() / popen()调用,但它允许您读取和写入其他进程,当然也避免了TCP套接字的开销。

答案 1 :(得分:1)

您可以使用套接字。 PHP有一个套接字实现:http://www.php.net/manual/en/ref.sockets.php

我只是在C中完成了套接字编程,但是你列出的大多数其他语言应该可以正常使用套接字。

在PHP中,您可以使用socket_bind()连接到套接字。同样,您需要在另一个守护进程上执行等效操作。