Выполнение php кода в Python
по какой-то причине мне нужно запустить PHP-скрипт, чтобы получить изображение из Python. Поскольку PHP-скрипт очень большой, и он не мой, мне потребуется несколько дней, чтобы найти правильный алгоритм и перевести его на python.
Мне интересно, есть ли способ запустить PHP-скрипт с несколькими параметрами, который возвращает изображение в python.
5 ответов
пример кода:
import subprocess
# if the script don't need output.
subprocess.call("php /path/to/your/script.php")
# if you want output
proc = subprocess.Popen("php /path/to/your/script.php", shell=True, stdout=subprocess.PIPE)
script_response = proc.stdout.read()
вы можете просто выполнить исполняемый файл php из Python.
Edit: пример для Python 3.5 и выше с использованием subprocess.run
:
import subprocess
result = subprocess.run(
['php', 'image.php'], # program and arguments
stdout=subprocess.PIPE, # capture stdout
check=True # raise exception if program fails
)
print(result.stdout) # result.stdout contains a byte-string
сделайте обертку вокруг скрипта PHP, который:
- выполняет материал (если я хорошо понимаю, это создание изображения),
- затем перенаправляет (301 Окончательно Перемещено) к изображению результата,
- (кроме того, изображение должно быть очищено когда-нибудь).
таким образом, вы можете обратиться к этому сервис (скрипт PHP) с простым HTTP запросом, из любого места, вы можете проверить его с помощью браузера, использовать с Python prg, вам нужно просто скачайте изображение обычным способом.
кроме того, если у вас есть такая автономная подсистема, не стесняйтесь внедрять ее с другим языком/техникой. Он имеет несколько преимуществ, например, вы можете установить эту службу на другом хосте.
рекомендуемое значение: Сервис-Ориентированная Архитектура на Википедии.
Если вы можете запустить PHP-скрипт локально из командной строки подпроцесс.check_output() позволит вам PHP и захватит возвращаемое значение.
Если вы получаете доступ к PHP через сокет, то вы можете использовать urllib.urlоткрыть() или urllib.urlretrieve() снести ресурсе.