Задать вопрос
empr
@empr

Как наладить «общение» между PHP-скриптом и C#-программой в Windows?

Задача экзотическая, конечно, но всё же. Есть PHP-скрипт (PHP7), который работает в Windows 7 в мультипоточном режиме (и постоянно в памяти висит). Есть C# утилита. Необходимо их связать между собой с высокой скоростью передачи данных между ними. Как это лучше сделать? Через сокеты? Через расширение к PHP DOTNET? (если да - какие инструменты .NET-фреймворка использовать?)

Переписывать всё не предлагайте - это, конечно, стоило бы сделать по-хорошему, но тут слишком малозначительная задача, чтобы тратить на неё много времени.

Спасибо!
  • Вопрос задан
  • 1094 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
@Beltoev
Живу в своё удовольствие
Вариант с сокетами вам уже предложили, но добавлю еще один способ:

Для быстрого обмена данными между процессами обычно используют разделяемую память.

То есть, PHP скрипт создает участок памяти (shmop_open) и пишет туда данные расчётов, а уже с помощью C#-утилиты считываете данные из этого участка и манипулируете ими.

Ну, а для оповещения утилиты о том, что данные можно забирать, можно использовать мьютекс. То есть, снова же, PHP при запуске создает мьютекс и занимает его, а утилита - также пытается его занять и "спит" в очереди. Как только данные можно будет обрабатывать - PHP освободит мьютекс, дав утилите команду "Фас!"

С PHP на Windows не игрался, но, думаю, что проблем не возникнет как с разделяемой памятью, так и с созданием мьютекса (распараллелить PHP ведь смогли уже =) ).
Ответ написан
@VZVZ
Reverse-Engineer, Software Developer, Architect
Через exec и stdout/stdin (правда, не знаю, возможно ли последнее со стороны PHP).
Ответ написан
@r_zaycev
Если не хочется изобретать велосипед, то можете попробовать Apache Thrift. На Хабре есть небольшая статья на эту тему (касательно C#).
Ответ написан
Комментировать
GavriKos
@GavriKos
Если с высокой скоростью - смотрите в сторону сокетного соединения
Ответ написан
profesor08
@profesor08 Куратор тега PHP
В зависимости от того, что вам конкретно нужно, то и делайте. "Наладить общение" - слишком абстрактное понятие, вдруг вы хотите просто пингануть процесс по порту.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
Lachestry Таганрог
от 170 000 до 200 000 ₽
SpectrumData Екатеринбург
от 150 000 до 220 000 ₽
14 дек. 2024, в 22:57
3000 руб./за проект
14 дек. 2024, в 22:46
150000 руб./за проект
14 дек. 2024, в 22:43
2000 руб./за проект