我在使用PHP exec()函數時遇到了一些麻煩。每當我試圖運行的腳本很短時,exec()就可以正常工作。但是如果腳本花費的時間超過一秒鐘,它就會失敗。請注意,我試圖在命令行上手動運行長腳本,並且它工作得很好。看起來好像PHP解釋器正在殺死我的外部腳本,如果它運行時間超過一秒鐘左右。任何想法或建議?這裏是我的代碼:PHP exec()函數只運行極短的Python腳本
<?php
$fileName = "foobar.docx";
$argVar = $fileName;
exec("python3 /var/www/html/jan8/alexandrina.py /var/www/html/jan8/$argVar");
echo "$output";
?>
這裏是我的腳本:
#!/usr/bin/env python3
import docx
import sys
docxFile = "".join(sys.argv[1:])
# The Three Lines Below Create a New Variable "htmlFile"
# "htmlFile" is the same as "docxFile", except ".docx" is cut off
# and replaced with ".html"
myNumber = len(docxFile) - 5
htmlFile = docxFile[0:myNumber]
htmlFile = htmlFile + '.html'
def generateHTML(filename):
doc = docx.Document(filename)
fullText = []
for para in doc.paragraphs:
fullText.append('<p>')
fullText.append(para.text)
fullText.append('</p>')
fullText.append('\n')
return '\n'.join(fullText)
file = open(htmlFile, "w")
file.write(generateHTML(docxFile))
file.close()
print("end python script")
附加說明:我已經增加最長執行時間限制在php.ini
,但我不認爲應該的問題,因爲「長腳本」只需要幾秒鐘就可以運行。另外,當我提到「短腳本」和「長腳本」時,我實際上是指同一個腳本。 「長腳本」和「短腳本」之間的區別僅僅是執行的時間,因爲它可能會因文件的大小而異,我要求腳本處理。無論如何...任何建議將真正感激!
如果在命令行中鍵入python命令,會發生什麼情況?提示是否立即返回?還是必須等待python腳本完成才能鍵入其他命令? –
如果我在命令行上運行python腳本,它工作得很好。 – crispytx
是的,但是當你從命令提示符運行時 - 一旦你輸入命令後點擊'enter',它會立即返回還是需要等到長時間運行的python進程完成? –