#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 ...
}
это была бы самая простая базовая форма этого.