21,893
社区成员




public function mh_all_img($id=140000,$limit=1000,$loop=0,$errurl=false,$continue=false)
{
$data = ChpModel::where(['id'=>['BETWEEN',[$id,$id+$limit]]])->column('id,comic_id,name,pl_index_url,img');
if ($id>252000) {
echo "done";
exit;
}
if (!$data) {
$id = $id+($limit*4);
unset($data);
$this->mh_all_img($id);
}
try {
$ql = $this->ql;
$ql->use(PhantomJs::class,'C:/wamp64/www/mh/vendor/phantomjswin/bin/phantomjs.exe');
if ($errurl) {
unset($errid);
$errid = 0;
foreach ($data as $key => $value) {
if ($value['pl_index_url'] == $errurl) {
if ($continue) {
$errid = $data[$key+1]['id'];
}else{
$errid = $value['id'];
}
}
}
foreach ($data as $key => $value) {
if ($value['id'] < $errid) {
unset($data[$key]);
}
}
}
foreach ($data as $key => $value) {
if ($value['img']) {
continue;
}
unset($imgs);
$imgs = [];
unset($url);
$url = $this->pl_domin.$value['pl_index_url'];
$imgs = $ql->browser($url,false,['--load-images'=>'false'])->rules([
'img' => ['#page_select>option','value'],
])->query()->getData()->all();
if (!$imgs) {
$str = $value['pl_index_url'];
throw new Exception($str);
}
$img = '';
foreach ($imgs as $k => $v) {
$img .= $v['img'].';';
}
$imgs = $ql->browser('about:blank')->query()->getData();
unset($imgs);
ChpModel::where('id',$value['id'])->update(['img'=>$img]);
unset($img);
}
unset($url);
unset($data);
unset($imgs);
unset($ql);
$id = $id+($limit*4);
$this->mh_all_img($id);
} catch (Exception $e) {
sleep(3);
$msg = $e->getMessage();
unset($url);
unset($data);
unset($imgs);
unset($ql);
$url = $msg;
Pl_error_logModel::create(['act'=>__FUNCTION__,'detail'=>$msg.'---id:'.$id]);
unset($msg);
$loop = $loop+1;
if ($loop>5) {
Pl_error_logModel::create(['act'=>__FUNCTION__,'detail'=>'loop out'.'---url:'.$url]);
$this->mh_all_img($id,$limit,0,$url,true);
}else{
$this->mh_all_img($id,$limit,$loop,$url);
}
}
}