У меня есть устройство GPS, которое может отправлять данные по TCP-соединению, но у меня нет возможности изменять отправляемое сообщение, чтобы он появился на моем сервере в виде HTTP-запроса – он может отправлять только сообщение в предопределенном формате.
Итак, у меня есть следующие вопросы:
1) Возможно ли, что Apache обрабатывает TCP-соединение, которое не приходит в виде HTTP-запроса, и отправляет ли сообщение отправленное PHP-скрипт?
2) Если # 1 невозможно, как бы вы порекомендовали мне обрабатывать данные, отправляемые на мой сервер?
Я буду потенциально иметь сотни, если не тысячи, этих блоков GPS, отправляющих данные на мой сервер, поэтому мне нужен эффективный способ обработки всех подключаемых подключений (вот почему я хотел, чтобы Apache или какой-то другой достойный сервер обрабатывал TCP соединения). Я хотел бы иметь возможность обрабатывать сообщение, отправленное по соединению с PHP, поскольку это то, над чем работает остальная часть моего приложения, и мне нужно будет вставить данные, отправленные в базу данных (и PHP действительно хорош в этом Такие вещи).
В случае, если это имеет значение, модуль GPS может отправлять данные по UDP-соединению, но из того, что я прочитал, Apache не работает с соединениями UDP.
Любые предложения приветствуются.
Использование Apache не было бы практичным, так как он использует ядерную бомбу, когда хватит фейерверка. Создание PHP-сервера довольно просто на Linux с помощью xinetd.
Измените /etc/services
. Предположим, что вы хотите, чтобы ваша служба работала на порту 56789. В /etc/services
добавьте строку:
gpsservice 56789/tcp
В /etc/xinet.d/
создайте файл с именем gpsservice
:
service gpsservice { socket_type = stream protocol = tcp wait = no user = yourusername server = /path/to/your/script log_on_success = HOST PID disable = no }
Создайте свой PHP-скрипт (chmod он будет исполняемым):
#!/usr/bin/php <?php // do stuff ?>
Перезагрузка xinetd service xinetd restart
Теперь у вас есть быстрый TCP-сервер, написанный на PHP.
Чтобы ответить на ваши вопросы:
1) Не без существенных изменений
2) Создайте свой собственный сервер. Это легко сделать с нескольких платформ и на нескольких языках. Мне лично нравится использовать Twisted Framework, потому что Python относительно прост в использовании, а структура очень гибкая.