Как я включаю Сценарий PHP в Python?

Включения не поддерживаются напрямую в YAML, насколько я знаю, вам придется самостоятельно создать механизм, однако, как правило, это легко сделать.

Я использовал YAML в качестве языка конфигурации в своих приложениях на Python, и в этом случае часто определяю такое соглашение:

>>> main.yml <<<
includes: [ wibble.yml, wobble.yml]

Затем в своем (Python) коде я делаю:

import yaml
cfg = yaml.load(open("main.yml"))
for inc in cfg.get("includes", []):
   cfg.update(yaml.load(open(inc)))

Единственным недостатком является то, что переменные во включениях всегда будут переопределять переменные в main, и нет никакого способа изменить этот приоритет, изменив место, где в файле main.yml присутствует оператор "includes:" .

В несколько ином аспекте, YAML не поддерживает включения, поскольку они на самом деле не спроектированы так, как исключительно разметка на основе файлов. Что будет означать включение, если вы получите его в ответ на запрос AJAX? ?

7
задан alecwh 29 June 2009 в 20:52
поделиться

5 ответов

import subprocess

def php(script_path):
    p = subprocess.Popen(['php', script_path], stdout=subprocess.PIPE)
    result = p.communicate()[0]
    return result

# YOUR CODE BELOW:
page_html = "<h1>News and Updates</h1>"
news_script_output = php("news-generator.php") 
print page_html + news_script_output
10
ответ дан 6 December 2019 в 10:52
поделиться

PHP - это программа. Вы можете запустить любую программу с подпроцессом .

Самая сложная часть - это моделирование всей среды CGI, которую ожидает PHP.

7
ответ дан 6 December 2019 в 10:52
поделиться

, возможно, не по теме, но если вы хотите сделать это таким образом, чтобы вы могли получить доступ к переменным и тому подобному, созданным сценарием php (например, массиву новостей), все будет лучше. должен выполнять exec php-скрипта, но возвращать json-кодированный массив элементов из php в виде строки, затем json декодирует их на стороне python и выполняет генерацию и итерацию html там.

1
ответ дан 6 December 2019 в 10:52
поделиться

Я думаю, что лучшим ответом было бы, чтобы apache отображал обе страницы отдельно, а затем использовал javascript для загрузки этой страницы в div. У вас есть небольшое замедление загрузки ajax, но тогда вам не нужно об этом беспокоиться.

Есть виджет с открытым исходным кодом, который будет запускать несколько языков на одной странице, но я не могу вспомнить, как он называется.

0
ответ дан 6 December 2019 в 10:52
поделиться

Вы можете использовать urllib, чтобы получить страницу с сервера (localhost) и запустить ее в подходящей для php среде. Не очень красиво, но это сработает. Если вы будете делать это часто, это может вызвать проблемы с производительностью.

0
ответ дан 6 December 2019 в 10:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: