我需要让我的PHP应用程序(它是一个独立的,而不是基于Web的)连接到服务器,并且还要托管一个tcp套接字来连接它...但是因为php不是多线程的,所以我不能让服务器在一个套接字上侦听,同时托管另一个套接字!这一切都必须在一个文件中。是否可以并排运行这两种方式?
答案 0 :(得分:3)
作为konforce答案的替代方案,请使用socket_select()
一次收听两个套接字。它将告诉您返回时哪些套接字能够被读/写。正如pdb和konforce都正确指出的那样,你需要使用socket_set_nonblock()
将套接字置于非阻塞模式。一旦socket_select()
告诉您套接字已就绪,请为每个就绪套接字尽可能多地写入或读取,然后再次调用socket_select()
。
答案 1 :(得分:1)
您将需要socket_select和非阻塞套接字。
例如,socket_select告诉您套接字是可写的,但不会告诉您可以在不阻塞的情况下发送多少字节。
答案 2 :(得分:0)
使用非阻塞套接字。请参阅socket_set_nonblock()
及相关功能。