@underc

Как правильно использовать python скрипт через PHP backend?

Есть простой сайт на PHP и есть задача, которую по определенным причинам удобнее выполнять на python
Так как PHP - мой второй язык, я понятия не имею, как реализовать совместную работу разных языков
Как мне правильно встроить (как это правильно называется?) python скрипт в работу PHP?
Спрашиваю не конкретную реализацию, а принцип. Нужно просто выполнить скрипт передав ему аргументы?
  • Вопрос задан
  • 223 просмотра
Пригласить эксперта
Ответы на вопрос 3
@rPman
В общем случае технологии называются Interprocess communication.

Изначально предлагались (php/python) механизмы очереди сообщений, shared memory и semaphores, как минимум на их основе делают высокоуровневые библиотеки по работе с сообщениями (и используют именно их, а не низкоуровневые, но знать про них обязан каждый, чтобы понимать недостатки)

Второе и самое логичное, использовать socket-ы, как unix socket или pipes, так и tcp. Многие не заморачиваются, а поднимают полноценный асинхронный http сервер и организуют общение между приложениями по http или лучше websocket протоколу, так как это позволяет распределить приложения уже не в пределах одного сервера, а в сети, что дает очень высокую гибкость, но ценой значительных накладных расходов на сериализацию.

Правда если используются разные языки программирования, в которых разные форматы для структур данных, так же придется сериализовать структуры, т.е. память копировать и кодировать/декодировать.
Ответ написан
Если этот python скрипт можно запустить из шелла, то используйте shell_exec(), или backtick operator, или ещё что-нибудь ( в конце страниц онлайн мануала есть секция "See also" )
Ответ написан
Комментировать
@Tagire
Есть 2 основных варианта. Первый как тут написано просто дергать скрипт через шелл, но нужно смотреть чтобы у пользователя под которым запущен пхп процесс были права доступа на запуск питон скрипта и параметры кидать через аргумент скрипта например в виде экранированного json.
Второе это в питоне сделать демона и ему в пхп через AMQP или redis очередь отправлять задачу, которую он будет обрабатывать и сохранять ответ.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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