我目前正在使用锁定/解锁功能来编辑使用webfrontend的文章。 作为一种可靠的技术,可以在编辑,关闭浏览器或离开页面后解锁文章,我开发了以下概念:
解锁操作具有以下代码。在ajax请求被取消之前,它应该什么都不做。
ignore_user_abort(true);
set_time_limit(0);
while (!connection_aborted()) {
usleep(100000);
}
// do database operations to unlock the article
但在ajax请求被ie取消之后。离开页面,它永远不会离开while循环。我也尝试过测试中止连接:
while (connection_status() === CONNECTION_NORMAL)
但结果相同,它永远不会离开循环。
答案 0 :(得分:0)
引自PHP手册
在尝试向客户端发送信息之前,PHP不会检测到用户已中止连接。简单地使用echo语句并不能保证发送信息,请参阅flush()。
因此,在您的while循环中,您应该将虚拟数据发送到客户端:
ignore_user_abort(true);
set_time_limit(0);
while (!connection_aborted()) {
echo "null"; @flush(); @ob_flush();
usleep(100000);
}
// do database operations to unlock the article