Підключення PHP через unix-сокет
У цій статті я наведу приклади коду, використовуючи які можна підключатися з боку PHP до Node.js серверу, що слухає сокс. Цілі можуть бути зовсім різні, а інструкцій в Інтернеті на цю тему я не знайшов свого часу. Тому вирішив поділитися своїм невеликим рецептом. Можливо, іншим цей підхід може також виявитися корисним.
Особисто я так в одному з проектів для того, щоб рендерувати Riot.js-компоненти на серверній стороні прямо з нашого PHP фреймворку. Робилося це дуже просто: PHP скрипт підключався до Node.js веб-сервера, який створював файл unix-сокету і слухав його. І на одержувані запити рендерил необхідні компоненти з потрібним набором даних, отриманих від PHP.
Загалом, тягти не буду, тема насправді дуже проста, тож перейдемо до інструкцій.
Встановлення та запуск вебсервера Node.js
З боку Node.js буде простий додаток, що працює на основі Express.js. Насамперед створимо файлpackage.json, в якому будуть описані залежності нашого Node.js-додатку:
body-parser— це невеликий додаток до express.js, який парсить HTTP запити і перетворює їх на зручні для роботи JS-об'єкти. Все це робиться абсолютно непомітно і прозоро, так що не морочтеся щодо цього.
Тепер опишемо код самого node.js-сервера, до якого підключатиметься PHP:
От і все. Помістіть два даних файлу в якусь папку і виконайте в ній дві наступні bash-команди:
Підключення PHP до Node.js серверу
Тепер напишемо код, який дозволить PHP підключатися до нашої ноди. Я чесно шукав якісь готові бібліотеки для PHP, які реалізували б HTTP підключення по unix-сокету, але нічого не знайшов, і мені нічого не залишалося, крім як трохи модифікуватиякийсь клас HTTPClient, який я знайшов на якомусь сайті в Інтернеті і який був призначений для роботи через звичайні TCP з'єднання. Знайти його можна тут.
Завантажте цей клас і покладіть його в папку поруч свого PHP програми. Тепер можна написати такий код:
Ось і всі премудрості :) Можна запустити наш PHP скрипт і побачити, як він підключається до юнікс-сокету до node.js та отримує від нього дані.
Ви можете допомогти і перевести небагато коштів на розвиток сайту