国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
4.3KB

  1. <?php
  2. /**
  3. * 生成文档操作
  4. *
  5. * @version $Id: makehtml_archives_action.php 1 9:11 2010年7月19日Z tianya $
  6. * @package DedeCMS.Administrator
  7. * @copyright Copyright (c) 2007 - 2020, DesDev, Inc.
  8. * @license http://help.dedecms.com/usersguide/license.html
  9. * @link http://www.dedecms.com
  10. */
  11. require_once(dirname(__FILE__)."/config.php");
  12. CheckPurview('sys_MakeHtml');
  13. require_once(DEDEINC."/arc.archives.class.php");
  14. $est1 = ExecTime();
  15. $startid = (empty($startid) ? -1 : $startid);
  16. $endid = (empty($endid) ? 0 : $endid);
  17. $startdd = (empty($startdd) ? 0 : $startdd);
  18. $pagesize = (empty($pagesize) ? 20 : $pagesize);
  19. $totalnum = (empty($totalnum) ? 0 : $totalnum);
  20. $typeid = (empty($typeid) ? 0 : $typeid);
  21. $seltime = (empty($seltime) ? 0 : $seltime);
  22. $stime = (empty($stime) ? '' : $stime );
  23. $etime = (empty($etime) ? '' : $etime);
  24. $sstime = (empty($sstime) ? 0 : $sstime);
  25. $mkvalue = (empty($mkvalue) ? 0 : $mkvalue);
  26. //一键更新传递的参数
  27. if(!empty($uptype))
  28. {
  29. if($uptype!='time') $startid = $mkvalue;
  30. else $t1 = $mkvalue;
  31. }
  32. else
  33. {
  34. $uptype = '';
  35. }
  36. //获取条件
  37. $idsql = '';
  38. $gwhere = ($startid==-1 ? " WHERE arcrank=0 " : " WHERE id>=$startid AND arcrank=0 ");
  39. if($endid > $startid && $startid > 0) $gwhere .= " AND id <= $endid ";
  40. if($typeid!=0) {
  41. $ids = GetSonIds($typeid);
  42. $gwhere .= " AND typeid in($ids) ";
  43. }
  44. if($idsql=='') $idsql = $gwhere;
  45. if($seltime==1)
  46. {
  47. $t1 = GetMkTime($stime);
  48. $t2 = GetMkTime($etime);
  49. $idsql .= " And (senddate >= $t1 And senddate <= $t2) ";
  50. }
  51. else if(isset($t1) && is_numeric($t1))
  52. {
  53. $idsql .= " And senddate >= $t1 ";
  54. }
  55. //统计记录总数
  56. if($totalnum==0)
  57. {
  58. $row = $dsql->GetOne("SELECT COUNT(*) AS dd FROM `#@__arctiny` $idsql");
  59. $totalnum = $row['dd'];
  60. //清空缓存
  61. $dsql->ExecuteNoneQuery("DELETE FROM `#@__arccache` ");
  62. }
  63. //获取记录,并生成HTML
  64. if($totalnum > $startdd+$pagesize)
  65. {
  66. $limitSql = " LIMIT $startdd,$pagesize";
  67. }
  68. else {
  69. $limitSql = " LIMIT $startdd,".($totalnum - $startdd);
  70. }
  71. $tjnum = $startdd;
  72. if(empty($sstime)) $sstime = time();
  73. //如果生成数量大于500,并且没选栏目,按栏目排序生成
  74. if($totalnum > 500 && empty($typeid))
  75. {
  76. $dsql->Execute('out',"SELECT id FROM `#@__arctiny` $idsql ORDER BY typeid ASC $limitSql");
  77. } else {
  78. $dsql->Execute('out',"SELECT id FROM `#@__arctiny` $idsql $limitSql");
  79. }
  80. while($row=$dsql->GetObject('out'))
  81. {
  82. $tjnum++;
  83. $id = $row->id;
  84. $ac = new Archives($id);
  85. $rurl = $ac->MakeHtml(0);
  86. }
  87. $t2 = ExecTime();
  88. $t2 = ($t2 - $est1);
  89. $ttime = time() - $sstime;
  90. $ttime = number_format(($ttime / 60),2);
  91. //返回提示信息
  92. $tjlen = $totalnum>0 ? ceil( ($tjnum/$totalnum) * 100 ) : 100;
  93. $dvlen = $tjlen * 2;
  94. $tjsta = "<div style='width:200;height:15;border:1px solid #898989;text-align:left'><div style='width:$dvlen;height:15;background-color:#829D83'></div></div>";
  95. $tjsta .= "<br/>本次用时:".number_format($t2,2).",总用时:$ttime 分钟,到达位置:".($startdd+$pagesize)."<br/>完成创建文件总数的:$tjlen %,继续执行任务...";
  96. //速度测试
  97. /*
  98. if($startdd > 1000)
  99. {
  100. ShowMsg("生成文件:1000 总用时:{$ttime} 分钟", "javascript:;");
  101. exit();
  102. }
  103. */
  104. if($tjnum < $totalnum)
  105. {
  106. $nurl = "makehtml_archives_action.php?endid=$endid&startid=$startid&typeid=$typeid";
  107. $nurl .= "&totalnum=$totalnum&startdd=".($startdd+$pagesize)."&pagesize=$pagesize";
  108. $nurl .= "&seltime=$seltime&sstime=$sstime&stime=".urlencode($stime)."&etime=".urlencode($etime)."&uptype=$uptype&mkvalue=$mkvalue";
  109. ShowMsg($tjsta,$nurl,0,100);
  110. exit();
  111. }
  112. else
  113. {
  114. if($typeid!='')
  115. {
  116. ShowMsg("生成文件:$totalnum 总用时:{$ttime} 分钟,现转向当前栏目更新&gt;&gt;","makehtml_list_action.php?typeid=$typeid&uptype=all&maxpagesize=50&upnext=1");
  117. }
  118. else
  119. {
  120. if($uptype=='')
  121. {
  122. ShowMsg("完成所有创建任务!,生成文件:$totalnum 总用时:{$ttime} 分钟。","javascript:;");
  123. } else {
  124. ShowMsg("完成文档HTML更新任务,现在开始进行主页更新...","makehtml_all.php?action=make&step=3&uptype=$uptype&mkvalue=$mkvalue");
  125. }
  126. }
  127. }