什么是 Long-Polling、WebSockets、SSE 和 Comet?如何在 PHP 中实现它们?
大家好!我是一名初学 PHP 的开发者,最近遇到了一个问题:需要制作一个网站聊天功能,让消息无需刷新页面就能到达。我知道 AJAX,但需要不断发送请求,效率不高。我开始搜索,遇到了这些术语:Long-Polling、WebSockets、Server-Sent Events (SSE) 和 Comet。老实说,我有点困惑。
目前我的理解是:Long-Polling 是客户端发送请求,服务器保持连接打开,直到有新消息出现。但如何在 PHP 中实现呢?PHP 是单线程的,不能长时间挂起,否则会耗尽内存。WebSockets 是持久连接,但我听说 PHP 不太适合这个,需要用 Node.js 或 Go。而 SSE 有点像从服务器到客户端的数据流,但似乎只能单向工作。Comet 听起来像是个古老的东西。
以下是我目前使用的简单 AJAX 轮询示例(用 PHP):
```php
// poll.php
$lastId = $_GET['last_id'] ?? 0;
$m