共被编辑 1 次

版本 更新时间 贡献者 编辑原因 操作
#r1 7月18日 konakona14 创建问题 查看

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/...