Выполнить php-код в Python

По какой-то причине я должен запустить php-скрипт, чтобы получить изображение с Python. Поскольку скрипт php очень большой, и он не мой, мне потребуется несколько дней, чтобы узнать правильный алгоритм и перевести его на python.

Мне интересно, есть ли способ запустить php-скрипт с несколькими параметрами, которые возвращают изображение, в python.

Пример кода:

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.

Изменить: пример для 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-скрипт локально из командной строки, subprocess.check_output () позволит вам PHP и захватить возвращаемое значение.

Если вы обращаетесь к PHP через сокет, вы можете использовать urllib.urlopen () или urllib.urlretrieve (), чтобы вытащить ресурс.

Вы можете использовать php.py. Это позволит вам выполнить php-код в python, как в этом примере (взято отсюда ):

 php = PHP("require '../code/private/common.php';") code = """for ($i = 1; $i <= 10; $i++) { echo "$i\n"; }""" print php.get_raw(code)