【问题标题】:file_get_contents文件获取内容
【发布时间】:2013-01-16 11:57:40
【问题描述】:

我想使用 php 函数 file_get_contents 在屏幕上列出 10.000 个页面以获取 db 的信息。

这一直有效到大约第 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 中记录这些页面是个好主意。

【问题讨论】:

  • 我认为 PHP 的 (max_execution_time) 将结束...
  • "获取数据库信息" ??你是什​​么意思?您为什么不编写一个脚本来读取数据并将其直接扔到数据库而不是文本框中?说到这,你应该是 html_special_char-ing 那个$string
  • 可能是因为显示的文本区域过多,导致您的浏览器挂起。

标签: php html loops


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        set_time_limt

        顺便说一下,加载 10,000 个页面需要相当多的时间(时间 + 带宽 + 资源),并且可能会拖累事情

        【讨论】:

          猜你喜欢
          • 2010-11-25
          • 2016-08-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-28
          • 2016-05-24
          相关资源
          最近更新 更多