Я хотел бы отобразить файл, в котором смешаны теги PHP и Web2Py.
Для этого я бы хотел, чтобы веб-сервер передавал файл через Web2Py, а затем через PHP. Я нашел способ вызвать PHP из Web2py через Python (на основе этого метода для запуск PHP поверх django), но этот метод теряет преимущества любой оптимизации сервера из mod_php или FastCGI, такой как кеширование и многопоточная работа. Для каждого запроса PHP создается новый процесс, который выполняется очень медленно.
Есть ли лучший способ эффективно отображать страницы с тегами Web2Py (Python) и PHP в одном файле? Примечание. Я не ищу методы обслуживания файлов только для PHP и Web2Py с одного и того же сервера / домена. Я предпочитаю решения для Apache2 или Cherokee. Однако я открыт для использования других веб-серверов.
Справочная информация: Я предпочитаю разрабатывать в Web2Py, но у нас есть уже существующая система, написанная на PHP. Я хотел бы дополнить систему PHP некоторыми функциями Web2Py, такими как проверка подлинности / управление пользователями и объект интернационализации T (). Кроме того, было бы намного проще переносить проект PHP на Web2Py, если бы это можно было делать по частям. Поскольку проект PHP состоит из множества файлов, было бы очень полезно, если бы они не нуждались в модификации.
Интерфейс CGI (PHP, Python или того, что вы используете) принимает ввод и преобразует его в вывод. Таким образом, должно быть возможно прикрепление одного к другому последовательно.
К сожалению, я не могу дать вам точных подробностей по этому поводу. Давай попробуем:
Apache2s fcgid_module предоставляет CGI.
FcgidInitialEnv PHPRC "/path/to/php/conf"
FcgidWrapper "/path/to/php/php-cgi" .php
Здесь два варианта:
В документе о fcgid говорится: «Директива может использоваться несколько раз», но я не уверен, что это включает вызов нескольких сценариев cgi для одного и того же суффикса файла.
Теперь не знаю, как вы вызываете python. Но wsgi - это также просто интерфейс вызова.
Лучший способ обойти это - отделить устаревшие биты php и загрузить их с помощью асинхронных вызовов JavaScript, используя (например) jQuery. Может быть очень сложно настроить ваш веб-сервер для обработки одного и того же запроса страницы в двух разных средах, и даже если вы все-таки заставите его работать, я предполагаю, что это серьезно снизит производительность, как вы уже указали.