我使用下面的代码在我的 PHP 页面中调用了 python 脚本:
echo shell_exec("python object_detection_tutorial_cmsc265.py");
Python脚本循环生成图像文件,直到满足特定条件。示例代码如下:
while (True):
cv2.imwrite('image' + str(loop) + '.png',image);
if (not condition):
break
当浏览器中退出 HTML/PHP 页面时,我可以看到图像数量仍在增加,这意味着 python 仍在执行。如何在退出 PHP 页面时停止 python 脚本?
最佳答案
假设你的 Python 脚本在后台运行,就像这样,你不能。
如果你想处理这个问题,你就必须处理 pid。
下面的内容有点脏,无论如何使用任何类型的 shell_exec
都是脏的,但请记住这一点。
你可以做什么:
- 使 Python 脚本在脚本启动时回显其 pid
- 使用
exec
PHP函数超过shell_exec
仅获取脚本的第一个输出行 - 在离开 PHP 脚本之前杀死这个 pid
Python
import os
print(os.getpid())
# your script
PHP
// code
$pid = intval(exec('python foo.py'))
exec("kill $pid")
好吧,我不是 PHP 开发人员,但 google 只是告诉我使用 posix_kill
可能会更好通过exec("kill $pid")
。
再说一次,这不是干净的代码,它很糟糕并且依赖于很多系统。
关于php - 退出 HTML 页面时停止在 PHP 文件中调用的 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50577657/