王朝网络
分享
 
 
 

修改mysql配置使博客定时发博文

王朝站长·作者佚名  2013-01-19  
宽屏版  字体: |||超大  

php程序是脚本,只有客户端触发才会执行。而很多网站建设过程中都需要定时功能,比如每天晚上凌晨数据库自动统计数据等。本文要讲述的是利用mysql的事件调度event_scheduler实现定时发博文。

以wordpress博客数据表为例子讲解原理(wp很多个人站长都熟悉):

wordpress有个wp_posts表(存放文章,多媒体文件),这个表有个字段叫post_status(状态)。这个字段有几个属性,其中publish表示发布,draft表示草稿。如果能够自己控制在某个时间点把draft改为publish,那么这个文章的状态不就从草稿变成了发布状态了么!

我发现wordpress后台好像没有设置定时的选项,因为php本身不支持定时执行。

如果博客要实现定时发信,该如何呢?

①设置mysql事件调度器。(后文)

②后台设置草稿后手动数据表post_date字段。

好了,不忽悠wordpress博主了。真要这么做的站长就是个二逼,用windows live writer多方便...

本站用thinkphp写的,后台可以定时发布。php本身不支持定时执行,所以才有mysql事件调度器的使用。

切入正题,步骤来了~

①打开数据库管理面板,执行下面的sql。

1SHOW VARIABLES LIKE 'event_scheduler'

如果event_schedules的值是OFF,表示你的数据库并没有开启事件调度器。

②开启事件调度器。执行下面的sql。

1SET GLOBAL event_scheduler = ON

在我实验的时候,发现一个问题。如果数据库重启,那么event_scheduler又变成了OFF。哪有一年365天持续稳定的数据库服务器呢~~

③ 修改mysql配置文件mysql.ini,默认开启event_scheduler。

在mysql安装的文件夹下找到配置文件my.ini,在[mysqld]的下面加上一句:event_scheduler=ON。这样mysql在启动的时候event sheduler就会自动启动了。

linux系统的mysql配置文件在 /etc 文件夹下,my.cnf文件(windows系统是my.ini文件)。linux下用 find 命令查找。

④点击进入需要执行定时的数据表,在此表下执行如下sql。

DROP EVENT IF EXISTS icaigen_post;

CREATE EVENT icaigen_post

ON SCHEDULE EVERY 300 SECOND

DO UPDATE sre_posts SET post_status = 0 WHERE id IN ( SELECT a.id FROM ( SELECT tmp.* FROM sre_posts tmp ) a WHERE a.post_status = 1 AND (a.post_time - UNIX_TIMESTAMP()) < 0 );

解释一下:icaigen_post是事件的EVENT的名称,名字任意取。第一行代码的意思是如果之前数据表中存在这个event,则删掉。

第三行 ON SCHDULE EVERY 300 SECOND 是指每隔300s执行一次后面(DO)的语句。

重点就是这条SQL语句。

1UPDATE sre_posts SET post_status = 0 WHERE id IN ( SELECT a.id FROM ( SELECT tmp.* FROM sre_posts tmp ) a WHERE a.post_status = 1 AND (a.post_time - UNIX_TIMESTAMP()) < 0 );

这里用了一个临时表,因为mysql不允许在一条语句里执行查找一个表后在修改这个表,所以用临时表存储子集。这个问题cnblog上有文章专门描述过,我也是从中学到了这点。参考:

http://www.cnblogs.com/chy1000/archive/2010/03/02/1676282.html

post_time是博文发布时间,UNIX_TIMESTAMP()是当前时间戳,因为我存的博文时间是时间戳,所以这里和时间戳比较。当当前时间戳大于定时时间(发布时间)时,就把post_status = 1 (数据字段含义,1表示草稿,0表示发布)修改为0。

因为这个event语句是每隔30秒执行一次,所以博文发布时间最大误差为30秒。

关于mysql event的详细介绍,可参考这篇文章:

http://netzp.blog.sohu.com/103852537.html

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有