我有一个可以通过TCP连接发送数据的GPS装置,但我没有能力修改它发送的消息,因此它会以HTTP请求的形式来到我的服务器 - 它只能以预定义格式发送消息。
所以,我有以下问题:
1)是否有可能让Apache处理不是以HTTP请求形式出现的TCP连接,并且发送的消息是否由PHP脚本处理?
2)如果无法#1,您会如何建议我处理发送到我服务器的数据?
我可能会有数百个(如果不是数千个)这些GPS单元向我的服务器发送数据,所以我需要一种有效的方法来处理所有连接(这就是为什么我想要Apache或其他一些有价值的服务器来处理TCP连接)。我希望能够处理通过PHP连接发送的消息,因为这是我的应用程序的其余部分运行,我将需要插入发送到数据库的数据(并且PHP非常擅长这样做之类的事情)。
如果重要,GPS单元可以通过UDP连接发送数据,但是从我读过的内容中,Apache不能与UDP连接一起使用。
欢迎任何建议。
答案 0 :(得分:3)
回答你的问题:
1)并非没有重大修改
2)构建自己的服务器。这可以通过多种平台和多种语言轻松完成。我个人喜欢使用Twisted Framework,因为Python使用起来相对简单,而且框架非常灵活。
答案 1 :(得分:2)
使用Apache是不切实际的,因为当鞭炮就足够时它会使用核弹。在xinetd的帮助下,在Linux上创建PHP服务器非常简单。
修改/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
您现在拥有一个用PHP编写的快速TCP服务器。