我正在尝试使用 jQuery/AJAX、PHP 和 mySQL 构建基于聊天的移动应用程序。我不希望客户端移动设备必须每秒轮询服务器上的 PHP 脚本以检查是否有新的聊天消息到达,因此我使用 AJAX 的“长轮询”范例来保持连接打开时间更长并且实现更多的推式架构。以下是服务器上的 PHP 代码:
$newMessage = CheckForNewMessage();
while ($newMessage == NULL) {
usleep(10000);
$newMessage = CheckForNewMessage();
}
$response = array();
$response['msg'] = $newMessage;
echo json_encode($response);
然而,正如所写,这个 PHP 代码相当定期地轮询 mySQL DBMS(仍然是一个拉模式)。我想知道是否有一种方法可以在此连接上实现推送范例(即,在 Web 层和数据层之间)。当新消息添加到表中时,我可以使用触发器或类似的东西来实现这一点吗?有没有人有这样做的经验?任何指针或想法将不胜感激。