PHP/Python - 后台的多线程睡眠



>我有一个问题,我试图让 Python 中的一个线程在后台休眠指定的时间。这需要在程序中完成,而不是在命令行级别,因为有数据从Python程序传递到PHP。

import os
from threading import Thread
class getPID(Thread):
    def run(self):
        print os.getpid()
class waitToKill(Thread):
    def run(self):
        time.sleep(25) #This is the sleep that needs to be done in the background
        os.system('pkill process')
getPID().start()
waitToKill().start()

这个概念是PHP将反复启动Python程序,然后在它命中pkill语句之前获取PID并杀死进程。当有人离开页面时,Python 程序将启动,但不会终止,从而到达 pkikll 语句并关闭通过进入页面启动的进程。

这和我想象的在 PHP/Python 中制作 Dead Man's Switch 一样简单,但它需要后台睡眠,因为 PHP exec() 函数在后台运行效果不佳,同时仍接收 std 输出。(即 exec(dms.py &)将挂起 25 秒,然后返回 PID 并显示页面的其余部分)

实现这一目标的最佳方法是什么?应该在time.sleep()级别还是线程级别?或者是否可以修改 PHP exec() 函数以在后台运行时发送输出?

感谢您提供的任何帮助!

完全

没有必要为此任务使用线程 - 在所有线程退出之前,该过程不会被视为已完成,因此让主线程提前完成没有任何好处。

您必须执行以下操作之一:

  • 从 PHP 执行脚本,使其不必等待进程完成(请参阅:php 执行后台进程)
  • 分叉 python 进程或以其他方式启动一个新的 python 进程,以便原始进程可以快速退出

相关内容

  • 没有找到相关文章

最新更新