array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 火车头采集器对接织梦cms图集发布时, 采集网上图片超时的解决方法 - 爱码网
haihua85

背景介绍:

火车头采集器对接织梦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;
}

 

分类:

技术点:

相关文章: