2012-03-30 138 views
0

我正在制作一个由php脚本控制的服务器,我有客户端(androidphones),他们调用这些脚本来控制服务器。我保存了php的数据库的IP地址。PHP请求检查客户端是否可通过IP

现在我正在寻找一种方法来检查,如果这些IP的依旧可达..

这是我试过到目前为止:

  • cron作业 - >我与开发usbwebserver所以我不能使用从CMD的PHP

  • 作出从PHP脚本的IP ping请求:如果可用它将返回相当“快”,但如果它失败,我得到最大excution错误。这种工作方式让我得到我想要的结果,但没有线程化的可能性,这个解决方案不会按照我的想法按时完成。这种方法有效吗?

  • 东西我考虑: -

    • 提出请求通过HTTP脱装置,并且做的结果我回来的东西,是这甚至可能(使从服务器到客户端的请求) ?
    • 制作一个python脚本,从db获取ip并进行ping调用并将结果存储回db。
    • 使时间戳当一个设备连接,并从其他设备检查时间戳,如果最大时间超过,则更新DB

有什么建议?

+2

我敢肯定,99.9%的终端用户家庭路由器默认设置为不响应ICMP坪也路线需要适当的设备响应,您的客户端或Android将不会有一个服务与运行打开端口以响应ping。这是一个棘手的问题,可能会让你更好地使用客户端的心跳,并使用超时。如果客户端正在请求数据,那么它的在线。 – 2012-03-30 12:02:34

+0

即使您成功ping通IP,这并不意味着您到达发出原始请求的设备。我猜想大多数移动设备每次重新连接到网络时都会得到一个新的IP地址,不是吗? – 2012-03-30 12:03:12

+0

@LawrenceCherone我已经ping到android没有问题...我会尝试心跳的方法。thx回复。对于其他replier:如果他们失去了连接设备仍然需要通过PHP捕捉新的IP ..所以IP是最新的。顺便说一句我正在使用这在lan网络 – Tobrun 2012-03-30 12:04:24

回答

0

这将无法正常工作,因为您将始终必须让您的客户端响应。我建议使用客户端(例如在使用javascript的html中)每分钟从客户端脚本连接到您的服务器,并在您的cronjobs中让脚本每x分钟运行一次以更新客户端, t在x内。

+0

我没有可能使用cronjobs .. – Tobrun 2012-03-30 12:09:32

+0

好吧,然后我建议每次脚本执行,让它检查/更新。另外,你可以使用PHP,通过制作一个单独的地图,并禁用PHP脚本的最大执行时间。在这种情况下,你可以执行一个无处不在的脚本;通过使用PHP睡眠()你可以设置一个延迟。 – ArendE 2012-03-30 23:47:33

0

这种检查绝对没有意义。
你将永远拥有这些知识产权。
只是因为Android客户端很少有一个真正的IP,但通过某些路由器/代理使用Net。

Web是单向的道路。 要实现一个心跳功能,你必须让你的Android客户端ping服务器。

相关问题