3

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

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

<?php

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

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

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

}

?>

@编辑

我想为我的计算机获取这些信息,以便通过 Javascript 进行操作,我认为这为使用 PHP 操作 HTML 提供了很多工作。在 db 中记录这些页面是个好主意。

4

4 回答 4

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 发布和服务器端将其保存到数据库

于 2013-02-01T07:55:51.297 回答
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

于 2013-02-01T07:47:04.640 回答
0

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

设置时间限制

顺便说一句,加载 10,000 个页面将需要相当多的时间(时间 + 带宽 + 资源),并且可能会使事情陷入困境

于 2013-02-01T07:46:13.843 回答
0

您可能会用完内存/执行时间。

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

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

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

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

于 2013-02-01T07:49:30.623 回答