的file_get_contents

时间:2013-02-01 07:43:27

标签: php html loops

我想使用php函数file_get_contents在屏幕上列出10.000页来获取数据库的信息。

直到第500页左右,然后脚本停止运行(页面已加载)并且没有显示错误。

<?php

for ($nr=1; $nr<=10000; $nr++){

$url = "http://site.com/u$nr";
$string = file_get_contents($url);

echo '<textarea>'.$string.'</textarea>';

}

?>

@edit

我想通过Javascript来操作我的计算机的这些信息,我认为使用PHP操作HTML会带来很多工作。 在db中记录这些页面是个好主意。

4 个答案:

答案 0 :(得分:2)

我建议在循环中设置你的time_limit 。设置时间限制将在给定的时间内“延长”超时;

<?php 
for ($nr=1; $nr<=10000; $nr++){
    $url = "http://site.com/u$nr";
    $string = file_get_contents($url);
    echo '<textarea>'.$string.'</textarea>';

    // extend the time-limit with this amount of time,
    // the amount of time this request is allowed to take
    set_time_limit(5);
}

?>

这样您就不必计算10.000条记录的“总计”时间限制,并且不允许单个请求(例如)1小时完成

<强> [更新] OP发布的新信息表明他希望使用javascript处理输入。因此,更好的解决方案是使用jQuery一次获取所有页面1,处理信息并将结果提交到数据库,使用Ajax帖子并将服务器端保存到数据库

答案 1 :(得分:1)

检查错误日志。您的脚本可能已超时(默认值为30秒)。尝试使用http://php.net/manual/en/function.set-time-limit.php

设置更长的超时

set_time_limit(120); // Script may run for 120 seconds before timing out

答案 2 :(得分:0)

您的PHP脚本超时。默认最长执行时间为30秒。使用此功能

set_time_limt

顺便说一下,加载10,000页需要花费很多时间(时间+带宽+资源)并且可能会让事情陷入困境

答案 3 :(得分:0)

你可能用完了内存/执行时间。

您需要检查phpinfo()并检查相应的设置(memory_limit应高于256Mmax_execution_time也应超过30分钟,如果您打算使用您的服务器进行此类操作。)

此外,请确保记录错误,然后显示它们(在开发环境中)(display_errors = 1error_reporting(E_ALL)log_errors = 1)。

抓取10000页是一个耗费资源的过程,您可能需要考虑在数据库中存储一些信息。

编辑:正如我前面的人所说,set_time_limit()max_execution_time的'每个脚本'选项,如果您不想永久更改服务器执行时间,请使用它。