PHP分叉进程接受连接

时间:2013-03-29 10:09:56

标签: php sockets fork

我想知道在绑定服务器的IP和端口后是否分叉了一个进程。 fork是否能够接受连接。如果我有10个叉子运行所有尝试接受,为了扩展,有可能超过1可以接受相同的连接或是否有一些锁定?

前几天我觉得在php写一个http服务器。因此它可以一次处理多个连接。主进程接受连接读取数据并通过unix套接字将其传递给线程。到目前为止,在我的笔记本电脑上,我可以在一个小页面上每秒获得1000个连接,提供当前日期和时间。其中一个瓶颈就是主流程。最初我会喜欢得到连接的文件描述符并将它们传递给套接字并让它们读取数据然后处理它。

1 个答案:

答案 0 :(得分:1)

是的,分叉的子节点将能够接受同一(继承)侦听套接字上的新连接。

假设您在所有子进程中使用了阻止socket_accept(),即使它最多可以处理100个进程,也不会遇到任何性能问题。操作系统将唤醒一个子进程以处理连接。

应该提到的是,使用ab或类似的负载生成器工具对它进行基准测试是一种很好的做法。