Apache - 处理TCP连接,但不处理HTTP请求

时间:2010-10-12 17:02:06

标签: php apache tcp

我有一个可以通过TCP连接发送数据的GPS装置,但我没有能力修改它发送的消息,因此它会以HTTP请求的形式来到我的服务器 - 它只能以预定义格式发送消息。

所以,我有以下问题:

1)是否有可能让Apache处理不是以HTTP请求形式出现的TCP连接,并且发送的消息是否由PHP脚本处理?

2)如果无法#1,您会如何建议我处理发送到我服务器的数据?

我可能会有数百个(如果不是数千个)这些GPS单元向我的服务器发送数据,所以我需要一种有效的方法来处理所有连接(这就是为什么我想要Apache或其他一些有价值的服务器来处理TCP连接)。我希望能够处理通过PHP连接发送的消息,因为这是我的应用程序的其余部分运行,我将需要插入发送到数据库的数据(并且PHP非常擅长这样做之类的事情)。

如果重要,GPS单元可以通过UDP连接发送数据,但是从我读过的内容中,Apache不能与UDP连接一起使用。

欢迎任何建议。

2 个答案:

答案 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服务器。