代码之家  ›  专栏  ›  技术社区  ›  caesay

php中的tcp/sockets,支持我的线程吗?

  •  1
  • caesay  · 技术社区  · 15 年前

    我需要让我的PHP应用程序(它是一个独立的,而不是基于Web的)连接到一个服务器,还需要宿主一个TCP套接字来连接到它。但是,由于PHP不是多线程的,我不能让服务器在一个套接字上监听,同时托管另一个套接字!所有这些都必须在一个文件中。是否可以同时运行这两个?

    3 回复  |  直到 15 年前
        1
  •  3
  •   Jack Kelly    15 年前

    作为Konforce答案的替代方案,请使用 socket_select() 同时监听两个插座。当它返回时,它将告诉您哪些套接字能够被读/写。正如PDB和Konforce都正确指出的那样,您需要将套接字置于非阻塞模式, socket_set_nonblock() . 一次 SokTyx选择() 告诉您一个套接字已经准备好了,为每个准备好的套接字尽可能多地写或读,然后调用 SokTyx选择() 再一次。

        2
  •  1
  •   pdb    15 年前

    您将同时需要socket_select和non-blocking套接字。

    例如,socket_select告诉您套接字是可写的,但不告诉您可以在不阻塞的情况下发送多少字节。

        3
  •  0
  •   Matthew    15 年前

    使用非阻塞插座。见 socket_set_nonblock() 以及相关功能。

    推荐文章