什么是 Long-Polling、WebSockets、SSE 和 Comet?如何在 PHP 中实现?
大家好!我是一名初学 PHP 的开发者,正在写一个简单的网站聊天功能。目前的工作方式是:用户通过 AJAX 发送消息,消息保存到数据库,其他用户手动刷新页面(F5)才能看到新消息。这非常不方便!
我听说过一些“实时”技术:Long-Polling、WebSockets、SSE 和 Comet。但我对这些术语感到困惑。据我理解,Comet 根本不是一种技术,而是一种模式?
我需要新消息能立即在所有用户那里显示,无需刷新页面。我使用的是 PHP 8.2、Apache 和 MySQL。请问对于聊天功能,应该选择哪种方法?我试过用 setInterval() 每 2 秒轮询的简单方案,但 20 个用户时服务器就开始卡顿。
以下是我当前代码的一部分(检查新消息):
```php
// check_new_messages.php
$lastId = $_GET['last_id'];
$stmt = $pdo->prepare("SELECT * FROM messages WHERE id > ? ORDER BY id ASC");
$stmt->execute([$lastId]);
$messages = $