请在Chrome、Firefox等现代浏览器浏览本站。网站域名:森林之家(www.foresthouse.cn)爱学习、爱分享、爱绿软、爱恐怖、爱音乐、爱唠叨、爱折腾、爱生活!

php防卡顿前台自动更新代码

web-build forest 656℃ 已收录 1评论

这是一个项目需求,要在一定访问时间段内自动更新网站的,也就是说如果网页被打开了并且在设定的时间段内就更新,这个代码可以做很多事情不止更新网站,更新个地图啊更新个文章啊啥的。

代码如下:

ini_set('date.timezone','Asia/Shanghai');
$lasttime=filemtime("uptime");//取当前目录中“uptime”文件的创建时间
$interval=5; //更新时间秒为单位秒(7200,2小时)
if((time()-$lasttime)>$interval)
{
fopen("uptime", "w");
//这里可以写程序啦!
}
需要注意的是如果服务器的php.ini中没有定义时区的话第一行是要写的,不然会报错,思路就是创建0字节的文件-然后判断创建这个文件的时间到此刻的时间过了多久-如果时间是设置的5秒,那就开始执行下面的代码。有个好处避免了同一时间有N个人打开网站,偏偏需要更新的东东占用很多资源的情况下非常实用。
一个织梦实例代码:
<?php
ini_set('date.timezone','Asia/Shanghai');
$lasttime=filemtime("uptime");//取当前目录中“uptime”文件的创建时间
$interval=50; //更新时间秒为单位秒(7200,2小时)
if((time()-$lasttime)>$interval)
{
//快速创建一个时间文件
fopen("uptime", "w");
$newtime=time();//当前时间
//这里可以写程序啦!
require_once(dirname(__FILE__)."/../include/common.inc.php");
//查询未审核文章,一次一编
$row = $dsql->GetOne("Select id,title,typeid,arcrank From #@__archives where arcrank=-1 order by id");
//待审核文章数是否为空
if(!is_array($row)){exit();}
//更新未审核的文章数据库并且把时间调整(arcrank=-1[待审核状态],arcrank=0[开放浏览];ismake=-1[动态浏览], $ismake = 1 [生成html静态浏览])
$upquery = "Update `#@__archives` set ismake=-1,arcrank =0,sortrank='$newtime',pubdate ='$newtime',senddate='$newtime' where id='$row[id]';";
$upquery1 = "Update `#@__arctiny` set arcrank =0,senddate='$newtime',sortrank='$newtime' where id='$row[id]';";
$rs = $dsql->ExecuteNoneQuery($upquery);
$rs1 = $dsql->ExecuteNoneQuery($upquery1);
if($rs==''&&$rs1=='') {exit();}
//程序结束
}
?>

注意:“uptime”文件一定要给写文件读写执行权限,不然的话不会创建文件,每执行这个php文件就会更新一次,因为当前时间减去创建文件的时间永久大于设定的时间。最简单的解决办法就是创建一个空白的txt文件命名为uptime上传到data目录(注意不要有扩展名,把.txt删除)用ftp给文件设置权限757即可如下图:


把这个PHP文件放到/data/目录下(不一定是data也可以是其它文件夹下但是注意只能是根目录下的一级文件夹下,同时把uptime文件也放在相同目录)

前台调用方法:<script src="/data/update.php"></script>

到现在这项功能已经完成了,那么怎么看我今天都审核了哪些内容呢?需要在后台搞一个可视化程序方便查看。

首先在上面的代码//程序结束换一行粘贴以下代码

$title=$row['title'];
$pid=$row['id'];
$sql = "INSERT INTO #@__verify (title,pid,utime) VALUES('$title','$pid','$newtime');";
$insql=$dsql->ExecuteNoneQuery($sql);
其次在后台找到“SQL命令行工具”打开它把下面的代码粘贴到SQL命令窗口中点击确定。
CREATE TABLE dede_verify(id int primary key auto_increment,pid int(10) unsigned NOT NULL default '0',title char(90) NOT NULL default '',utime int(10) unsigned NOT NULL default '0')
然后下载下面的压缩包,把里面的一个php文件放到织梦后台目录默认是dede,然后再把htm文件放到织梦后台目录的templets文件夹中。

自动审核可后台视化

最后打开织梦后台目录/inc/inc_menu.php找到“常用操作”在下面添加以下代码:

<m:item name='自动审核记录' link='isverify.php' target='main' />
效果如下:
<m:top item='1_' name='常用操作' display='block'>
<m:item name='自动审核记录' link='isverify.php' target='main' />

php防卡顿前台自动更新代码

也可以在此代码的基础上做一个延伸,比如随机审核1到10篇,或者是3到5篇。

在“//查询未审核文章,一次一编”换一行写入以下代码:

//循环随机1或10次
$rand = mt_rand(1,10);
for ($i=1; $i <= $rand; $i++ ){

在“//审核结束,缓存数据”后面加一个“}”就行了。这样可以更随机更人性化,避免了每天都固定的文章显得很死板很机器。

结尾:既然都审核了文章还需要一个地图,这里可以在审核文章后自动把sitemap地图也顺便更新一下,在//审核结束,缓存数据换行粘贴下面代码:

require_once(dirname(__FILE__)."/../plus/task/generate_sitemap.php");
“generate_sitemap.php”代码参考这篇文章织梦网站地图定时更新
本站文章如未注明,均为原创丨本网站采用BY-NC-SA协议进行授权,转载请注明转自:http://www.foresthouse.cn/archives/6211.html
喜欢 (2)or分享 (0)
发表我的评论(注:在您评论完以后不会立即显示,请不要重复刷新以免进入黑名单。)
取消评论
表情 代码 贴图 加粗 链接 私信 删除线 签到

Hi,请填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)条精彩评论。
  1. 文章非常好超喜欢来自天朝的朋友 谷歌浏览器 Windows 10
    头条2020年-04月-16日发表回复| Google Chrome 78.0.3904.108| unknow