2

使用 PHP CLI SAPI 开发(简单)服务器软件是否可能(并且可行)?PHP中是否有一些可用的(真正的)多线程方式,以便服务器能够同时处理多个请求?或者你会为这样的项目推荐另一种脚本语言(Python 或类似的东西)?

4

2 回答 2

1

是的,可以用 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 功能、数据库或至少一个文件进行通信。

于 2012-12-14T14:14:51.293 回答
0

使用 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 是一种多线程语言,但它不会向脚本的运行时公开多线程功能。

于 2012-12-14T14:27:17.080 回答