У меня возникли проблемы с использованием функции 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? –