PHP分叉进程接受连接


PHP forked processes accept connections

我想知道在绑定了服务器的IP和端口之后是否派生了一个进程。fork是否能够接受连接?延伸一下,如果我有10个分叉都在运行,都试图接受是否有机会超过1个可以接受相同的连接,或者有一些锁定?

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

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

假设你在所有子进程中使用阻塞socket_accept(),即使它增加到100个进程,你也不应该遇到任何性能问题;操作系统将唤醒一个子进程来处理连接。

应该提到的是,使用ab或类似的负载生成器工具对其进行基准测试是一个很好的实践。