我目前正在使用锁定/解锁功能,以使用Webfrontend编辑文章。 作为编辑,关闭浏览器或离开页面后解锁文章的可靠技术,我开发了以下概念:

  1. 访问编辑页面时锁定文章
  2. 立即发送AJAX请求,而无需超时即可执行解锁操作

解锁操作具有以下代码。 在取消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)

但是具有相同的结果,它将永远不会离开循环。

#1楼 票数: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

  ask by Andreas Linden translate from so

未解决问题?本站智能推荐:

2回复

发送AJAX结果,但继续使用PHP进行处理

我正在使用AJAX更新数据库中的某些值。 所有人都非常精彩,但现在我想实现一些日志记录。 日志记录功能看起来会花费相当多的处理时间,并且他们没有理由让用户等待他们完成以查看他们的AJAX结果。 所以,我试图找到一种方法来发送AJAX结果,并仍然继续在服务器端进行处理。 我的研究提出了i
4回复

跨AJAX调用保持FTP连接PHP资源

我有一个多用户PHP Web应用程序,可以通过AJAX与FTP服务器进行交互。 该应用程序允许用户浏览FTP站点。 Javascript进行AJAX调用,该调用与服务器脚本进行通信,该服务器脚本返回给定目录中的文件和目录列表。 这很好。 但是,每次请求目录列表时,服务器都必须重新建立与
3回复

如果客户端断开连接,则停止执行PHP脚本

我有以下问题。 程序客户端向服务器发送HTTPS操作。 服务器获取所需的操作和所有参数。 但是,当被调用的PHP脚本工作时,客户端会断开连接。 脚本回应响应,客户端不会得到任何不应该的响应。 因为它是重要的操作,客户端应该总是得到响应,我想在这种情况发生时阻止PHP脚本执行。
2回复

在进行聊天时使用套接字连接和普通PHP/MySQL/Ajax之间的区别

我想知道的是,如果我尝试构建一个聊天应用程序,使用通常使用XMPP或其他协议的普通PHP / MySQL / Ajax和套接字连接,会有多大的不同。 请让我知道,这样我就可以按照正确的方式更快地制作聊天应用程序。
1回复

如何使用AJAX从数据库中删除行

这是我的PHP代码 AjaxServer.php 这是我的js文件Custom.js
1回复

在仍加载时将数据发送到ajax请求

我需要在PHP上做一些事情(这将花费很多时间...),并且随着它的流动,我需要向ajax调用页面发送一个数字(也许是百分比),更新加载栏。 但是我不知道如何“加载”尚未加载的页面字符串... 而且,这是否有一个“词”?
2回复

如何在多个AJAX调用之间维持mysql连接?

我有一个网页使用jQuery来执行多个AJAX调用,而不是一次执行。 每个AJAX调用都指向不同的PHP文件,并且每个文件都使用到相同mysql服务器和数据库的连接。 在这些AJAX调用中的每个调用中创建连接对于性能而言都是很糟糕的,我如何创建一个连接并在所有AJAX调用中维护该连接? 谢
1回复

在AJAX调用后关闭mysqli数据库连接

我正在处理ajax.php中的ajax调用,该ajax.php使用mysqli_connect()函数建立数据库连接,并在回显和退出之前使用mysqli_close()函数关闭连接权限。 似乎连接仍然保持打开状态,是由于在进行一定量的ajax调用后出现“ To many connection