我尝试使用 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,您会发现它们基本上几乎相同。而且这种行为才刚刚开始发生,直到一两天前,两者都运行良好。
有任何想法吗?我可以提供我错过的任何进一步信息!
Edit:
文件完成位置的示例...原始文件包含:
<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>