@Galdar
Web, JS, PHP, NGINX, Linux

Как реализовать обмен данными между Node js и php?

Есть socket io на nodejs, все работает хорошо, но появилась потребность в socket`e исполнять php скрипты. Есть часть php скриптов которые, либо переписывать на node js, либо подвязывать к socket. Конечно хотелось бы подвязать их socket. Но вот как сделать, так как сокет асинхронный, работает с памятью есть возможность подвязать синхронные php скрипты и хранить их в памяти до конца их выполнения. И тут что будет правильно и вообще возможно ли?
---
1. Создать socket io на PHP и обмениваться данными между node js и php
или
2. Установить библиотеку для запуска PHP в node js
---
-В первом случае это идея, которую я пока не знаю как сделать.
-Во втором нахожу библиотеки но в них по большей части есть просто вызов, но нет обмена данными между node и php. Тобишь я могу запустить php или node файл, без обратного ответа в виде json.

Хотелось бы получить ответ как это лучше сделать, совета. Какую нибудь схему постройки этой системы, в которой node js socket io может запустить php и дождаться ответа.
  • Вопрос задан
  • 267 просмотров
Решения вопроса 1
@abberati
frontend-разработчик
PHP и node должны общаться по http.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
inoise
@inoise Куратор тега PHP
Solution Architect, AWS Certified, Serverless
Посмотри на ratchet или workerman. Нода для сокетов мне нравится больше, но тогда придется очень весело подпрыгивать в вопросах коммуникации и изоляции
Ответ написан
Комментировать
bingo347
@bingo347 Куратор тега Node.js
Crazy on performance...
На мой взгляд самое правильное - делать из ноды запросы к php-fpm. Он общается по давольно стандартизированному протоколу fast-cgi, для которого на npm можно найти клиент, например вот: https://www.npmjs.com/package/fastcgi-client
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Используйте как уже сказали http/s
или любую очередь, например вот эту https://www.rabbitmq.com/

Пс да хоть заведите отдельную табличку в БД
и пишите в нее задания.

jobid | jobstatus | jobparameters | jobresult
------------------------------------------------------
42 | pending | {"param": "paramvalue"} |23
43 | inprogress | {"param": "paramvalue"} | 99
44 | complite | {"param": "paramvalue"} | 999
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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