我在尝试使用 CURL 或 file_get_contents 提取第 3 方文件内容时遇到了一些奇怪的行为,读取了页面的部分内容,但它停在了随机位置……虽然没有错误(超时等)。
如果我给出完整的例子,可能最容易看到!:
使用以下非常基本的脚本来读取完整的 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>