【问题标题】:Run a php script on closing browser [duplicate]在关闭浏览器时运行 php 脚本 [重复]
【发布时间】:2016-05-23 21:19:45
【问题描述】:

我创建了一个系统,其中有两种类型的用户: 真实用户 演示用户

真实用户是现实生活中的用户,需要属于这些用户的所有数据。 演示用户是仅为演示目的而创建的假用户。不需要此类用户的信息。

当一个真实的用户登录时,他执行操作并保存他的数据并注销。所有信息都保存在数据库中。

当演示用户登录时,他执行相同的操作并注销。我创建了一个脚本,在注销时删除演示用户的所有数据。这非常有效。

当演示用户没有注销而只是关闭浏览器时会出现问题。“注销页面”上存在的删除脚本没有运行。

我想要在关闭浏览器时运行脚本并且删除成功的东西。

【问题讨论】:

  • 使用 cron 作业删除非活动用户会有问题吗?
  • 我认为 cron 作业已安排。意思是在特定时间。不是在行动
  • beforeunload 是您拥有的最好的,但是如果页面被导航离开,而不仅仅是在浏览器关闭时。 IMO 我不会依赖用户浏览器来解决这个问题。 rsz 提到的 cron 是更好的选择。
  • @Francis 您可能并不需要立即清除演示数据。使用 cron 清理任何超过 24 小时或其他时间的演示用户。

标签: php


【解决方案1】:

您可以使用后台运行的后台进程 (cron) [查找基于 unix 的服务器的 crontab],例如每 5 分钟执行一次,并删除所有您不需要的数据。

如果您不想使用 cron,您还可以使用一个功能,该功能会在每次登录或注销时删除您不需要的所有数据,但请记住,这会影响用户体验在您有大数据的情况下加载。

我建议第一种方式,但也许第二种方式对你来说更容易。

;)

【讨论】:

    【解决方案2】:

    在 Javascript 中,您可以获得onunload event,它在页面退出之前被调用。您可以在用户退出页面之前对您的 .php 脚本执行 AJAX 请求,以便在用户退出时销毁您服务器上的所有演示数据,即使他没有手动注销。

    【讨论】:

    • 这会一直调用它吗?如何区分“离开用户”和“正在加载不同页面的用户”?
    • 我认为你必须手动完成。您可以在单击页面上的链接时设置回调,例如,当它是内部链接时,可以将布尔值设置为true,而当它是外部链接时,可以将布尔值设置为false。在启动脚本擦除数据之前,您检查布尔值是否设置为truefalse。例如,这适用于链接或表单,但不适用于用户重新加载页面时。
    猜你喜欢
    • 1970-01-01
    • 2015-01-28
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 2011-11-12
    • 2012-06-24
    • 2012-07-29
    相关资源
    最近更新 更多