Доступ к необработанному запросу веб-сервера Apache

#php #apache #sockets

#php #apache #сокеты

Вопрос:

Я намерен разработать веб-приложение для отслеживания gps. gps передает данные с использованием TCP (без заголовков HTTP) на порт 7070 (который я намеревался изменить на 80). Я знаю протокол для связи между GPS-трекером и клиентом, однако я застрял, поскольку не могу перехватить пакет данных на веб-сервере. Поскольку приложение находится на стадии разработки, а я любитель, я не могу позволить себе выделенный сервер веб-хостинга и, таким образом, получить доступ к интерфейсу php-cli для программирования сокетов.

есть ли какой-либо способ, которым я могу обойти необходимость в php-cli и перехватить необработанный tcp-пакет.

Спасибо

Ответ №1:

Просто создайте специальный PHP-скрипт, прослушивающий порт 7070, что вы можете выполнить с помощью fsockopen() . Вы не хотите, чтобы ваш GPS отправлялся непосредственно на порт 80, когда Apache уже прослушивает порт 80. Apache увидит, что поступает набор данных, отличных от HTTP, и полностью проигнорирует запрос.

 $handle = fsockopen('localhost', 7070, $errno, $errstr);
if (!$handle) {
   die("Couldn't bind to socket (err $errno): $errstr");
}

while($data = fgets($handle)) {
    ... process gps data ...
}
  

это была бы самая простая базовая форма этого.