火车头采集器对接织梦cms图集发布时, 采集网上图片超时的解决方法
生活随笔
收集整理的這篇文章主要介紹了
火车头采集器对接织梦cms图集发布时, 采集网上图片超时的解决方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
背景介紹:
火車頭采集器對接織夢cms圖片集發布時, 對于多張(超過30張)大圖片時, 經常會出現圖集發布超時的情況.?問題分析:
因為php對于資源的處理有默認的超時時間30秒, 而我嘗試了好多方法, 都無法規避php運行30秒超時的這個問題. 所以想了個折中方案.?折中方案:
在采集網上圖片時, 判斷當前采集了如果已經到了28秒, 那么就不再采集下面的其他圖片.?修改php代碼:
打開文件dede/inc/inc_archives_functions.php 關注下列代碼中begin_time和now_time判斷部分.function GetCurContentAlbum($body, $rfurl, &$firstdd) {global $dsql,$cfg_multi_site,$cfg_basehost,$cfg_ddimg_width;global $cfg_basedir,$pagestyle,$cuserLogin,$cfg_addon_savetype;$begin_time = time();require_once(DEDEINC.'/dedecollection.func.php');if(empty($cfg_ddimg_width)) $cfg_ddimg_width = 320;$rsimg = '';$cfg_uploaddir = $GLOBALS['cfg_image_dir'];$cfg_basedir = $GLOBALS['cfg_basedir'];$basehost = 'http://'.$_SERVER['HTTP_HOST'];//$img_array = array();//echo "<br />body: ".$body;preg_match_all("/(src)=[\"|'| ]{0,}(http:\/\/([^>]*)\.(gif|jpg|png))/isU",$body,$img_array);$img_array = array_unique($img_array);//echo "<br />";//print_r($img_array);$imgUrl = $cfg_uploaddir.'/'.MyDate($cfg_addon_savetype, time());$imgPath = $cfg_basedir.$imgUrl;if(!is_dir($imgPath.'/')){MkdirAll($imgPath,$GLOBALS['cfg_dir_purview']);CloseFtp();}$milliSecond = 'co'.dd2char( MyDate('ymdHis',time())) ;foreach($img_array as $key=>$value){ for ($i = 0; $i < count($value); $i++) {$now_time = time();if ($now_time - $begin_time >= 28) {//已經執行了28秒, 很快就超時了, 不再獲取其他外部資源, 避免超時return $rsimg;}$value1 = $value[$i];$value1 = trim($value1);$value1 = str_replace("src='", "", $value1);$value1 = str_replace("src=", "", $value1);$value1 = str_replace("src=\"", "", $value1);echo "<br />download img from web: ".$value1;if(preg_match("#".$basehost."#i", $value1) || !preg_match("#^http:\/\/#i", $value1) || ($cfg_basehost != $basehost && preg_match("#".$cfg_basehost."#i", $value1))){//echo "<br />continue;";continue;}$itype = substr($value1, -4, 4);if( !preg_match("#\.(gif|jpg|png)#", $itype) ) $itype = ".jpg";$rndFileName = $imgPath.'/'.$milliSecond.'-'.$key.'-'.$i.$itype;$iurl = $imgUrl.'/'.$milliSecond.'-'.$key.'-'.$i.$itype;//echo "<br /> iurl:".$iurl;//下載并保存文件$rs = DownImageKeep($value1, $rfurl, $rndFileName, '', 0, 30);if($rs){$info = '';$imginfos = GetImageSize($rndFileName, $info);$fsize = filesize($rndFileName);$filename = $milliSecond.'-'.$key.$itype;//保存圖片附件信息$inquery = "INSERT INTO `#@__uploads`(arcid,title,url,mediatype,width,height,playtime,filesize,uptime,mid)VALUES ('0','$filename','$iurl','1','{$imginfos[0]}','$imginfos[1]','0','$fsize','".time()."','".$cuserLogin->getUserID()."'); ";$dsql->ExecuteNoneQuery($inquery);$fid = $dsql->GetLastID();AddMyAddon($fid, $iurl);if($pagestyle > 2){$litpicname = GetImageMapDD($iurl, $cfg_ddimg_width);}else{$litpicname = $iurl;}if(empty($firstdd) && !empty($litpicname)){$firstdd = $litpicname;if(!file_exists($cfg_basedir.$firstdd)){$firstdd = $iurl;}}@WaterImg($rndFileName, 'down');$rsimg .= "{dede:img ddimg='$litpicname' text='' width='".$imginfos[0]."' height='".$imginfos[1]."'} $iurl {/dede:img}\r\n";}}}return $rsimg; }
參考: 絲魅吧
總結
以上是生活随笔為你收集整理的火车头采集器对接织梦cms图集发布时, 采集网上图片超时的解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: KMP(看毛片) 算法
- 下一篇: ChatGPT火爆全网!可以写代码、编剧