背景介绍:

火车头采集器对接织梦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图集发布时, 采集网上图片超时的解决方法相关推荐

  1. DM达梦数据库删除表时提示锁超时的解决方法

    DM 达梦数据库删除表时提示锁超时的问题 1. 问题描述 达梦数据库删除表时,删除失败,提示的报错信息是 锁超时 2. 解决方法 查询所删除表对应的SESS_ID,sql语句如下: select a. ...

  2. php 表单必选改为选填,织梦dedecms自定义表单选项必填修改解决方法

    本文实例讲述了织梦dedecms自定义表单选项必填修改解决方法.分享给大家供大家参考.具体方法如下: 方法一:首先我们要用一段php代码来判断验证必选项. 1.我们先在plus/diy.php 文件中 ...

  3. 织梦dedecms 静态网页生成速度很慢的解决方法

    织梦dedecms 静态网页生成速度很慢的解决方法,从dedecms官网论坛找到个合适的代码: 打开 include/inc/inc_fun_SpGetArcList.php 找到: for($i=0 ...

  4. 织梦采集,织梦采集工具,织梦cms免费采集

    织梦采集,整合了织梦DEDE发布接口,提供有织梦自动采集.织梦自动更新.织梦自动发布等强大的功能,让站长们可以轻松地建立织梦网站或者织梦CMS站群,织梦CMS作为开源的程序,能配上织梦采集管理,将会帮 ...

  5. dede php替换,织梦CMS批量替换所有文章来源和作者的方法

    有时候我们想对 DedeCms使用技巧:如何批量替换文章"来源"和"作者" 1.打开dedecms网站根目录,找到 \templets\article_add. ...

  6. 织梦安装后提示Function ereg_replace() is deprecated的解决方法

    织梦 dedecms v5.6 安装后提示 Deprecated: Function ereg_replace() is deprecated in D:\www\dede\config.php on ...

  7. php应用中有畅言,怎么去掉,织梦友情链接删除织梦链,后台畅言模块报错解决方法...

    删除织梦友情链接中的"织梦链" 两种方法: 1:直接在模版中删除关于织梦链的调用标签 {dede:flinktype type="dedecms"} {/ded ...

  8. 基于php的织梦cms新闻发布,DedeCms

    相关开源项目 Croogo:PlanCake是一个开源的任务和待办事务管理器.基于Symfony框架开发.支持利用拖放操作和键盘快捷键排序任务.按结束日期创建任务并在一个日历中显示你的待办事务. sN ...

  9. 织梦本地调试运行PHP不显示图片,织梦dedecms不能下载远程图片实现图片本地化解决方法...

    DEDE图片本地化失效的主要原因: 服务器上的运行环境中禁用了fsockopen()函数 解决方案一: 在用fsockopen()的地方用stream_socket_client()函数代替. 具体修 ...

最新文章

  1. Linux 下的dd命令使用详解(摘录)
  2. adb shell 小米手机_如何在Android手机上进行自动化测试
  3. 极速理解设计模式系列:2.观察者模式(Observer Pattern)
  4. cellet 的相关线程
  5. k8s 组件介绍-API Server
  6. js实现操作等待提示loading……
  7. CVPR 2022数据集汇总|包含目标检测、多模态等方向
  8. URDGN:Ultra-resolve Face Images by Discriminative Generative Networks
  9. 8. Andrénalin ★ Serial
  10. FPGA深度学习加速(1) - Xilinx ug892-Vivado design flows overview (Vivado设计流程简述) - 阅读笔记
  11. 微信小程序-引入iconfont图标
  12. Coherence缓存学习
  13. 转载:程序员必备的8个学习工具
  14. android root查看目录权限,Android真机获取root权限,进入data目录
  15. “暗云”BootKit木马详细技术分析
  16. Unity3d在PC上竖屏运行
  17. 线程池之ThreadPoolExecutor详解
  18. 杰理之探测芯片最高稳定运行频率【篇】
  19. virsh的详细命令解析
  20. Redis的三种启动方式

热门文章

  1. SqlServer2008Ldf文件过大处理
  2. 隐藏桌面上计算机图标不见了怎么办,我的电脑桌面隐藏图标不见了?
  3. PCB设计师需要知道的前5个PCB设计指南-PCB布线布局导致的焊接、装配问题
  4. 基于PyTorch+Conv-GRNN LSTM-GRNN实现中文情感分类任务
  5. Quartus2入门的一个波形仿真的实例教程
  6. 2020下半年总结:void
  7. mtk-drm初始化
  8. 关于word标题样式——字体设置,应用后无效的问题
  9. 无权更改wlan网络android,Windows 10显示WLAN2、以太网2,修改提示“无法重命名”的解决方法...
  10. 小程序源码:炫酷手持滚动弹幕生成小工具