php - 退出 HTML 页面时停止在 PHP 文件中调用的 Python 脚本

标签 php python

我使用下面的代码在我的 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 都是脏的,但请记住这一点。

你可以做什么:

  1. 使 Python 脚本在脚本启动时回显其 pid
  2. 使用exec PHP函数超过shell_exec仅获取脚本的第一个输出行
  3. 在离开 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/

相关文章:

php - 包含包含文件的 php 文件

php - 多选菜单

php - 相对 + 基本 URL 到绝对 URL?

php - 从 C 程序执行 php 脚本并将结果存储到变量中

python - 在矩阵中每隔一行添加一个新行,其元素是其上方和下方元素的平均值

python - 列表与 int 分配 - "Every variable is a pointer"

PHP PDO Mysql 未加载。 extension在extensions.ini中,php_mysql.so存在,但是phpinfo只显示sqlite和dblib

python - 两个不同字典之间的乘法

python - 如何使用 Python 进行简单的 http 重定向?

python - 如何在 Tensorflow SavedModel 中列出所有使用过的操作?