php中的TCP /套接字,支撑着我的线程?

时间:2010-09-02 05:25:10

标签: php sockets

我需要让我的PHP应用程序(它是一个独立的,而不是基于Web的)连接到服务器,并且还要托管一个tcp套接字来连接它...但是因为php不是多线程的,所以我不能让服务器在一个套接字上侦听,同时托管另一个套接字!这一切都必须在一个文件中。是否可以并排运行这两种方式?

3 个答案:

答案 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()及相关功能。