Прямо сейчас я запускаю скрипт Python из PHP, используя exec(), так как мне нужно передать некоторые динамические переменные с веб-сайта/MySQL в командную строку. Однако я хотел бы улучшить как скорость, так и безопасность этой операции, поэтому я подумал об использовании WSGI. Я думал, что можно было бы встроить скрипт Python в файл WSGI, который использовал бы переменные, переданные прямо (или косвенно) из PHP... но как я мог это сделать? Я никогда не использовал WSGI, поэтому даже не знаю, глупый это вопрос или нет :)
Как избежать PHP exec() с помощью WSGI для выполнения скрипта Python?
Ответы (1)
Во-первых, можете ли вы сделать все это на Python или PHP? Использование нескольких языков обычно рассматривается как анти-шаблон. Это не значит, что это всегда плохая идея, но вы должны сначала задаться вопросом, почему, и только потом, если вы убеждены, что это хорошая идея, двигайтесь вперед.
Что касается специфики того, что вы хотите сделать, есть несколько вариантов:
При использовании Apache вы можете использовать функцию
virtual()
для создания нового запроса. через Апач.Предполагается, что вы используете mod_php и mod_wsgi. По сути, вы должны создать строку запроса для переменных, которые хотите передать, и вызвать ее следующим образом:
virtual('path/to/python.py?'.$query);
Напишите свой собственный шлюз PHP WSGI.
По сути, кодируйте спецификацию WSGI в библиотеку и вызывайте ее явно из PHP.
Придерживайтесь вызова из
exec()
(на данный момент это, вероятно, лучший вариант).
Вы должны учитывать, что перекрестное включение между языками сопряжено с накладными расходами. Вы никогда не справитесь с этим, это просто природа зверя. Поэтому вместо этого я бы предложил хранить весь запрос внутри одной среды и полностью обрабатывать его в этой среде...