我正在使用PHP和MySQL以及PHP Simple HTML DOM Parser。我必须解析一个网站的页面并获取一些内容。为此我将网站的主页作为初始URL并获取该页面上可用的所有锚标签。
我必须过滤这些网址,因为每个链接对我都没用。所以,我使用正则表达式。必须的链接必须保存到我的mysql数据库中。
我的问题是:
如果我提取所有链接(大约1,20,000个链接)并尝试保存到mysql DB中,我收到以下错误: 致命错误:第12行的C:\ xampp \ htdocs \ search-engine \ index.php超出最长执行时间60秒
我无法将数据存储到数据库中。
我无法过滤链接。
include('mysql_connection.php');
include('simplehtmldom_1_5/simple_html_dom.php');
$website_name="xyz.html/";
$html=file_get_html("xyz.html/");
foreach($html->find('div') as $div)
{
foreach($html->find('a') as $a_burrp)
{
echo $a1 = $a_burrp->href . '<br>';
if(preg_match('/.+?event.+/',$a1, $a_match))
{
mysql_query("INSERT INTO scrap_urls(url, website_name, date_added) VALUES(`$a1`, `$website_name`, now())";
}
}
}
答案 0 :(得分:2)
由于PHP中的配置限制,您收到致命错误:最长执行时间为60秒。您可以通过在代码顶部添加如下所示的行来放大此数字:
set_time_limit(320);
更多信息:http://www.php.net/manual/en/function.set-time-limit.php
您还可以在 xampp
中放大php.ini文件中的数字答案 1 :(得分:1)
实际上,PHP并不是最好的解决方案。 PHP脚本旨在执行快速操作和返回响应。在您的情况下,脚本可能会运行很长时间。虽然您可以增加max_execution_time,但我鼓励您使用比标准PHP更灵活的其他技术,例如Python或JavaScript(Node.js)
答案 2 :(得分:0)
我也/通常使用需要“一段时间”完成的PHP脚本。
我总是将这些脚本作为cronjob运行,或者直接从shell或命令行运行:
php script.php参数
虽然我不必介意执行。 php_execution_time通常设置为&lt; = 60secs。
问候。