【发布时间】:2012-12-16 21:33:56
【问题描述】:
我在尝试使用 CURL 或 file_get_contents 提取第 3 方文件内容时遇到一些奇怪的行为,已读取页面的 pasrt,但它停在随机位置...虽然没有错误(超时等)。
如果我给出完整的例子,可能最容易看到!:
使用以下非常简单的脚本来读取完整的 URL 并返回内容可以正常工作,在一两秒内获得页面的完整内容(少一些外部 css 等):
<?php
set_time_limit(180);
$page = file_get_contents('http://www.fantasyleague.com/Classic/Stats/playerlist.aspx?dpt=3');
echo $page;
?>
但是,如果我们改为
<?php
set_time_limit(180);
$page = file_get_contents('http://www.fantasyleague.com/Classic/Stats/playerlist.aspx?dpt=4');
echo $page;
?>
它需要很长时间才能运行,并最终返回页面的一部分,但不是全部。它并不一致,但它通常以“A Westwood AV 3.6 12”或“show”结尾,在页面稍远一点的地方。
如果您查看这两个 URL,您会发现它们基本相同。而且这种行为刚刚开始发生,直到一两天前,都运行良好。
有什么想法吗?我可以提供任何我错过的更多信息!
编辑:
文件完成位置的示例...原始文件包含:
<div class="right">
<a id="Playerlist_help_button" class="button left" href="#"><div>Show help</div></a>
<a id="Playerlist_filters_button" class="button left" href="#"><div>Show filters</div></a>
<a class="button left" href="PlayerListPrintable.aspx" target="_blank"><div>Printable Version</div></a>
<br class="clear" />
</div>
但检索到的数据停在:
<div class="right">
<a id="Playerlist_help_button" class="button left" href="#"><div>Show help</div></a>
<a id="Playerlist_filters_button" class="button left" href="#"><div>Show
或者它经常失败的另一个地方是:
<td><div class="chilli normal" /></td>
<td>12</td>
<td>0</td>
变成:
<td><div class="chilli normal" /></td>
<td>12</td>
【问题讨论】:
-
页面上是否有可能存在 Javascript 并且部分内容正在通过 AJAX 检索?
-
Strage,maxlen 默认是读取到文件末尾。
-
我尝试使用 Ruby(超时)和 Python(在“12”之后结束)加载页面,所以我猜这与服务器有关
标签: php curl file-get-contents