2010-02-10 83 views
0

我们有一个脚本,它从远程服务器提取一些XML。如果此脚本在除生产以外的任何服务器上运行,则它可以工作。PHP/cURL问题打开远程文件

然后将其上传到生产,但它失败。它正在使用cURL来处理请求,但不管我们怎么做 - fopen,file_get_contents,套接字 - 它只是超时。如果我使用Python脚本来请求URL,也会发生这种情况。

与其他URL一起提供的相同脚本用于查询,每次都适用。显然,它不会返回我们正在查找的XML,但它会返回SOMETHINg - 它可以连接到远程服务器。

如果通过命令行使用例如curl或wget再次请求此URL,则会返回数据。这不是我们正在寻找的数据(事实上,它返回一个空的根元素),但有些东西会回来。有趣的是,如果我们从URL中删除查询字符串元素(完整的URL有7个查询字符串元素并且总共运行约450个字符),那么脚本将返回相同的空XML响应。查询字符串的某些组合将再次导致脚本超时。

这个,你可以想象得到,我完全困惑 - 它似乎适用于任何情况,除了它需要工作。我们可以在我们的开发服务器上得到响应,我们可以得到对命令的响应如果我们放弃某些QS元素,我们可以得到响应 - 我们无法通过LIVE服务器上的正确URL获得我们想要的响应。

有没有人有任何建议?我在我的智慧结束!

+0

什么是操作系统?这听起来像是一个外部库的问题。 – Matt 2010-02-10 13:00:08

+0

没有什么比展示您的代码示例更好! – ghostdog74 2010-02-10 13:00:35

+0

服务器是Apache 2.2.10和PHP 5.2.6。 有问题的代码在这里:http://pastebin.com/m1242fa04尽管它的大部分是直接从雅虎提供给我们的,我只是为了调试目的而做了一些修改。 – 2010-02-10 13:04:12

回答

1

运行Wireshark并查看请求走多远。可能是防火墙问题,DNS解决问题等等。

另外,试着将你的卷曲超时值调高一些,比如300s,然后看看它是如何发生的。