因此,这既是一个特定于语言的问题,也是一个理论问题,但请考虑一下:
我需要 PHP 来执行一个系统密集型进程(使用 PHP exec();
),该进程将在后台运行,但是当用户离开该特定页面时,该进程将被终止。
我很快意识到,死人的开关将是实现这一点的一种简单方法,因为我没有使用任何会话变量或其他服务器端变量,最终可能看起来像:
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 中的实现会如何?我看到它的工作顺序是:
- 页面被用户点击
<?php exec('killer.py') ?>
- 杀手.py:
- 听 20 秒 - 如果没有反应...
os.system('pkill process')
<?php while(true){sleep(15); exec('killer.py no_wait_dont');} ?>
你们的任何想法将不胜感激!
石匠