我想用分页帖子解析网站类别的值。我需要的信息是内部帖子。我尝试使用Simple HTML DOM来做到这一点。我明白了,但我认为这不对。脚本工作缓慢,有大量数据我得到错误
最长执行超时300秒
<?php
include('simple_html_dom.php');
$total_pages=600;
$i = 1;
while ($i <= $total_pages):
$html = file_get_html(''.$url.'/'.$from.'');
foreach($html->find('.itemReview h3 a') as $a) {
$post = file_get_html('http://www.website.com/'.$a->href.'');
$author_mail = $post->find('.sellerAreaSecond',0);
$author_mail = $post->plaintext;
$a_mail_array[] = $author_mail;
}
$fp = fopen('file.csv', 'w');
foreach( $a_mail_array as $ddd) {
fputcsv($fp, array($ddd));
}
fclose($fp);
$from++;
endwhile;
?>
答案 0 :(得分:0)
当您通过网络请求您的页面以及其中的帖子时,当然这很慢并且您会遇到大量数据的脚本超时。尝试增加你的php.ini文件中的最大执行时间。
答案 1 :(得分:0)
一种解决方案是增加服务器设置的时间限制(php.ini)
更好的方法是让服务器从自身下载100页并解析它们。解析HTML需要花费大量时间,它必须遍历所有代码并找到您的.read_more a
和.authoremail
。我怀疑你正在处理普通文件以进行数据存储,如果你应该切换到像MySQL甚至SQLite这样的数据库,那么你可以只查询数据库 - 这需要相当少的时间。这不仅会让您的网站在更多内容时崩溃,而且还会加快速度。
使用SQL,您只需将作者的电子邮件存储在表格中,然后使用SELECT authoremail FROM posts
,然后使用foreach()。这使您可以在运行时按日期,名称等进行排序。只是让你的网站运行缓慢而低效,我增加时间限制可能不是一个好主意。