我需要为我的应用程序编写一些服务.我希望每个客户端都有有限的持久连接(比如只允许前10个客户端连接).
我知道我可以通过socket_listen()用PHP监听端口.父进程接受连接,然后pcntl_fork()进程让子进程处理连接.
但据我所知,当fork()编辑时,PHP资源不会持久存在.我想知道是否有可能用PHP做到这一点,或者我必须在C中做到这一点?
解决方法:
1)
为什么要打扰分叉?将守护程序作为单个进程运行,并使用socket_select()(或stream_select)来侦听请求.
有关现成的解决方案,请参阅Aleksey Zapparov的代码here.
2)
为什么要编写自己的套接字代码的麻烦 – 使用[x] inetd管理服务器并在stdio上进行通信(请注意,与解决方案1不同,每个客户端都会有一个单独的进程 – 因此处理代码将是非阻塞的)
–
你说PHP资源不应该在分叉的过程中可用 – 你是正确的 – 但没有说明这与你当前的问题有什么关系.是否可以计算连接数?或者是其他东西?就前者而言,有更简单的方法可以做到这一点.使用解决方案1,只需在客户端连接/断开连接时递增和递减计数器变量.在2的情况下,采用相同的方法,但将变量保存在数据文件/数据库中(您可能还希望存储有关连接的信息并运行偶尔的审计).或者限制防火墙上的连接.
C.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。