QueryList::html的内存溢出问题

//采集规则
        $reg  = [
            'detail_link' => ['.deanarticec>.deanarticer>.deanarticername>a', 'href'],
            //采集文章标题
            'title'       => ['.deanarticec>.deanarticer>.deanarticername>a', 'text'],
            'image'       => ['.deanarticec>.deanarticel>.atc>a>img', 'src'],
            'brief'       => ['.deanarticer>.deanarticersummary', 'text', '-a -.content_copyright -script'],
        ];
        $rang = '.deanartice>ul>li';
        
$data = QueryList::html(file_get_contents('test.html'))->rules($reg)->range($rang)->queryData(function ($item) {
                if ($item['image'] != "" && $item['image'] != "template/dean_hotspot_141011/deancss/nopic.jpg") {
                    $item['image'] = 'http://ecigm.com' . $item['image'];
                }
//                $item['title'] = mb_convert_encoding($item['title'], 'utf-8', 'gbk');
//                $item['new_brief'] = mb_convert_encoding(strip_tags($item['brief']), 'HTML-ENTITIES');
                return $item;
            });

这段代码是可以直接运行的,执行php artisan catch:name 执行会遇上Segmentation fault: 11这个C++内存问题,原因是无限的递归导致爆栈而出现的报错。

其中$html的内容可以打开http://ecigm.com/bk/dt/index....,来进行调试。

关于内存缘故请看:http://www.laruence.com/2011/...

阅读 2.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进