使用 PHP CLI SAPI 开发(简单)服务器软件是否可能(并且可行)?PHP中是否有一些可用的(真正的)多线程方式,以便服务器能够同时处理多个请求?或者你会为这样的项目推荐另一种脚本语言(Python 或类似的东西)?
2 回答
是的,可以用 PHP 开发 TCP 或 UDP 服务器。看看 PHP 中的一组套接字函数:PHP:Sockets - Manual
尽管 PHP 没有多线程功能,但您可以使用非阻塞 IO(请参阅socket_set_nonblock()
)以及socket_select()
要回答“是否可行”这个问题,需要有关项目要求的更多信息。“是”的原因可能是:
- 您需要将服务器集成到现有的 PHP 类、模型框架中
- 您计划使用服务器交换 PHP 数据结构。(可能使用
serialize()
,生成unserialize()
)
当然,您可能会为您找到其他原因。
您应该注意的另一件事是,在 Web 服务器环境(例如 apache SAPI)中,您已经有一个并行 TCP 服务器 - Web 服务器。您只需要实现几个请求之间的通信。您可以使用 PHP 的 IPC 功能、数据库或至少一个文件进行通信。
使用 PHP CLI SAPI 开发(简单)服务器软件是否可能(并且可行)?
已经有一个内置的: http: //php.net/manual/en/features.commandline.webserver.php
PHP中是否有一些可用的(真正的)多线程方式,以便服务器能够同时处理多个请求?
您通常不会在 PHP 中执行此操作,而是将其交给一个单独的服务(您也可以用 PHP 编写),例如http://php.net/manual/en/book.gearman.php
或者您会为这样的项目(Phyton 或类似的东西)推荐另一种脚本语言吗?
这取决于您的需求,没有更多信息就无法回答。Python、 Java 或 Golang 可能是更好的选择
注意:PHP 是一种多线程语言,但它不会向脚本的运行时公开多线程功能。