gpt4 book ai didi

php - PHP/Python 中的死人开关

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:36:12 26 4
gpt4 key购买 nike

所以这既是一个理论问题,也是一个特定于语言的问题,但考虑一下:

我需要 PHP 执行一个系统密集型进程(使用 PHP exec(); ),该进程将在后台运行,但当用户离开该特定页面时,该进程将被终止。

我很快意识到 dead man's switch 是实现这个的简单方法,因为我没有使用任何 session 变量或其他服务器端变量,它们最终可能看起来像:

if($_SERVER['REQUEST_URI'] !== 'page_with_session.php'){
//Instead of 'session_destroy();' this would be used to kill said process
}

在任何情况下,PHP 中的 while 循环,重置 Python 脚本中的计时器或每 15 秒重新调用所述脚本,这样它就不会结束并终止进程。然而,当用户离开页面时,脚本将被调用但无法在终止进程之前重置。

这个想法有什么漏洞吗?如果不是,PHP/JS 中的实现会是什么样子?我看到它的工作顺序是:

  1. 页面被用户点击
  2. <?php exec('killer.py') ?>
  3. killer .py:
    1. 听 20 秒 - 如果没有反应......
    2. os.system('pkill process')
  4. <?php while(true){sleep(15); exec('killer.py no_wait_dont');} ?>

如果你们有任何想法,我们将不胜感激!

梅森

最佳答案

Javascript 更简单,也差不多安全(也就是说,不多)。

只需编写一个 javascript ping 函数,每 10 秒向 ping.php 发送一次内容(通过 ajax)。当在用户 session 中收到最后一个 ping 时,此 ping.php 将记录(例如 $_SESSION['last_ping'])

您可以通过将 $_SESSION['last_ping'] 与当前时间进行比较来检查其他页面的用户事件。您将不得不用它来填充您的运行时密集型页面,但它肯定会起作用。

关于php - PHP/Python 中的死人开关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11785720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com