![](/img/trans.png)
[英]Run Python script from php, save process pid, and don't wait it to finish
[英]trying to run a python script from a php script: returns a pid but doesn't execute
我試圖在后台執行python腳本,並從通過單擊按鈕調用的php腳本獲取pid。 這里的問題是PID不存在,並且python腳本的任務沒有完成。 我不確定發生了什么。 我已經使用終端測試了python腳本,它的工作原理很吸引人。
<!DOCTYPE html>
<html>
<body>
<?php
echo 'Starting the mapping process';
echo exec('python frist_script.py > /dev/null 2>&1 & echo $!');
//echo exec('ls > /dev/null 2>&1 & echo $!;');
?>
</body>
</html>
python腳本僅執行ls
並將輸出寫入文件。 python腳本的代碼如下。
import os
import datetime, time
import sys
import argparse
import psutil
import glob
import select
os.system('ls >output_files.dat')
注意:這不是最終腳本,而是一個測試腳本,用於確認我的python腳本調用正常運行。
任何幫助是極大的贊賞。
謝謝
PS: ls -al
輸出
-rw-rw-r-- 1 acs www-data 262 May 18 16:31 execute.php
-rwxr-xr-x 1 www-data www-data 147 May 18 16:17 frist_script.py
我也嘗試過shell_exec();
編輯:我試圖運行一個簡單的shell腳本,但不會得到執行,但Shell命令可以正常工作。
更新:從終端php execute.php
執行時python腳本或shell腳本有效,但從Web服務器運行時不起作用。
問題 :...但是從Web服務器運行時不起作用。
請問您的服務器有 PHP的支持?
創建一個新腳本或將os.system(...
替換為:
import subprocess
try:
# os.system('ls >output_files.dat')
lsoutput = subprocess.check_output('ls', stderr=subprocess.STDOUT)
print('ls output:', lsoutput)
except subprocess.CalledProcessError as e:
print("CalledProcessError:", e)
從您的php script
調用此php script
。
從
echo exec('python frist_script.py > /dev/null 2>&1 & echo $!');
至
echo exec('python frist_script.py >> /tmp/php_exec 2>&1');
查看任何錯誤消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.