在php脚本中查找超时链接


find timeout links in a php script

我有一个php脚本,如下所示:admin.php?action=插件&operation=config&do=92

php文件中有多个include和其他函数,每次加载它时,可能会有一个错误的链接,导致整个页面在超时后加载(chrome的调试器通常只需2.1或2.1分钟)。

我的问题是,我如何找到这个坏链接,它被发送到服务器进行处理/连接,并最终超时?

error_reporting报告没有任何有用的信息。我一直在试着看看xdebug是否有效,但我不知道如何使用它。我需要一种方法来找到坏链接/ip/hostname,而无需遍历每一段代码。

任何建议都将不胜感激!

我能理解的是,一旦你键入url,它就会向你的管理员发送请求。php脚本会将响应发送回你的浏览器,但响应中有很多js/css/image文件,这些文件有坏链接,为了找出坏链接,你可以使用fiddler。这将告诉您的页面发送的所有请求以及URL。Fiddler将显示哪个请求需要多少加载时间。

如果我理解正确,导致延迟的原因包括服务器端的include和/或requires。

如果是这样的话,你可以放一些带有时间戳的行,看看是哪一个导致了问题,例如:

echo "Start:".date("H:i:s");
require_once("lib1.php");
echo "lib1 loaded at :".date("H:i:s");
include("lib2.php");
echo "lib2 loaded at :".date("H:i:s");
.....

然后,你可以使用你喜欢的浏览器网络面板来查看响应内容,它会告诉你是哪一个导致了延迟。

我修复了ssh下tcpdump的问题。

使用tcpdump,我可以看到我的服务器建立的所有连接,从那里我在加载特定页面时测试了每个IP,并且IP的ping从ping中超时。

我拒绝了iptables中的ip,并永久解决了这个问题。