php - 在 PHP 中连接断开时执行脚本

标签 php mysql ajax timeout connection-pooling

我是 PHP 新手,我用它来开发一个小型网络应用程序。在我的设计中,我依赖于一个我最初认为很容易使用的功能,但随着我深入研究,我意识到这可能是一个相当基本的问题。

设置如下:

  • 我有数据 block ,我们称它们为 data_1,...,data_n

  • 对于任何 i,data_i 可能无法访问

  • 当用户连接时,他会获取第一个可用的大量数据并将其标记为不可访问

  • 当用户停止工作时,数据可以再次访问

  • 没有登录, session ID用于用户识别

  • 数据存储在 MySQL 数据库中

现在,我以这样的方式实现它:根据请求,用户用数据锁定表,找到第一个可用的表,设置标记并解锁表。

问题是当用户不删除标记时 - 我需要默认在某个时刻再次提供数据。

我尝试了 JS,但 Window.onbeforeunload 不能保证运行(例如崩溃时)。

我尝试运行一个 PHP 脚本来轮询连接。但我需要在其间执行其他脚本,并且我了解到这是不可能的,因为当时只有一个脚本可以访问 session 数据,因此轮询脚本会阻止其他脚本的执行。

我已经通过在与用户具有独占访问权限的数据的每次通信中保存时间戳来解决这个问题(并添加在窗口打开时建立连接的脚本以防止超时)。如果新用户到来,他会检查时间戳,如果有足够长的暂停,他会获取数据并存储他的时间戳。

然而,我的解决方案只是一种解决方法,并不能真正解决问题。谷歌搜索显示,每个人都在询问如何在连接丢失后继续执行的问题 - 但这不纯粹是这种情况,因为对我来说,连接丢失时没有执行。

问题是:如何使用 PHP 5.4 创建一个在连接丢失后执行的脚本?

谢谢。

最佳答案

  1. 您需要使用套接字。

2.查看“示例#1ignore_user_abort()示例”

关于php - 在 PHP 中连接断开时执行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19428403/

相关文章:

php - 使用 Paypal 自动发送发票

Php Date 函数在实时服务器中不起作用

mysql - 如何使用一两条SQL语句检索多个用户的最新帖子?

ruby-on-rails - Rails 中的 AJAX - 执行简单循环以在可用时更新信息

javascript - django self,保存后pk成功函数()

javascript - Summernote图片通过AJAX上传导致页面刷新

php - 在 PHP 中将一行的 MySQL 值设置为默认值

php - 是否有有助于将 IPTC 数据嵌入 JPEG 的 PHP 类?

php - 无法登录Usercake

mysql - 在数据库中存储杂项数据