Apache - 处理TCP连接,但不处理HTTP请求
我有一个可以通过TCP连接发送数据的GPS单元,但我没有修改它发送的消息的能力,所以它会来到我的服务器HTTP请求的形式 - 它只能以预定义的格式发送消息。Apache - 处理TCP连接,但不处理HTTP请求
所以,我有以下问题:
1)是否有可能具有的Apache处理不以HTTP请求的形式来建立TCP连接,并具有在发送要处理的信息由PHP脚本?
2)如果#1是不可能的,你会如何建议我处理发送到我的服务器的数据?
我可能会有数百个(如果不是数千)这些GPS单元发送数据到我的服务器,所以我需要一个有效的方式来处理所有的连接(这就是为什么我想要Apache或其他有生产价值的服务器处理TCP连接)。我希望能够处理通过与PHP的连接发送的消息,因为这是我的应用程序的其余部分运行的内容,并且我需要将发送的数据插入到数据库中(并且PHP非常擅长这样做之类的事情)。
万一它很重要,GPS单元可以通过UDP连接发送数据,但是从我读取的内容中,Apache不能使用UDP连接。
任何建议将受到欢迎。
使用Apache将是不实际的,因为它使用核弹时,爆竹就足够了。在Linux上借助xinetd创建一个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服务器。
回答您的问题:
1)不是没有大的修改
2)建立自己的服务器。这可以通过几个平台和几种语言轻松完成。我个人喜欢使用Twisted Framework,因为Python使用起来相对简单,而且框架非常灵活。
谢谢 - 我会研究这一点。问题很简单 - 使用UDP连接进行这项工作需要什么?而且,这个简单的解决方案是否可以处理一小时的数千个请求 – Scott 2010-10-12 19:37:37
您可以在服务文件和gpsservice文件中将'tcp'更改为'udp'。不建议使用UDP,因为它可能是不可靠的协议:http://www.mindcontrol。org /〜hplus/udp-vs-tcp.html – webbiedave 2010-10-12 20:09:21
只是一个人站起来,没有超过65535的TCP端口号。 – dctucker 2013-09-19 15:25:11