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プログラムを繰り返し開始し、PIDを取得して、pkill
ステートメントに到達する前にプロセスを強制終了するというものです。pkikll
誰かがページを離れると、Pythonプログラムは開始されますが、強制終了されないため、ステートメントに到達し、ページを入力して開始されたプロセスを閉じます。
これは、PHP / Pythonでデッドマンスイッチを作成するのと同じくらい簡単ですが、PHPexec()
関数はstd出力を受信している間はバックグラウンドで物事をうまく実行しないため、バックグラウンドスリープが必要です。(つまりexec(dms.py &)
、PIDを返し、ページの残りの部分を表示する前に25秒間ハングします)
これを達成するための最良の方法は何ですか?それはtime.sleep()
レベルまたはスレッドレベルである必要がありますか?または、バックグラウンドで実行しているときに出力を送信するようにPHPexec()
関数を変更できますか?
あなたが提供できるどんな助けにも感謝します!