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

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

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

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

Спасибо!
  • Вопрос задан
  • 1122 просмотра
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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
Микропетпроджект - домашнее облако homeCloud
Если с высокой скоростью - смотрите в сторону сокетного соединения
Ответ написан
profesor08
@profesor08 Куратор тега PHP
В зависимости от того, что вам конкретно нужно, то и делайте. "Наладить общение" - слишком абстрактное понятие, вдруг вы хотите просто пингануть процесс по порту.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽