今天始终在查找链接数据库之类的问题,上午正好有机会和大家分享一下.
需求背景
在一个论坛系统中,户用交提的论评如果管理核审才会示显。同时,有这么一个则规,如果此条论评在3天内没有管理员作操,直接删除,我称此行为为“价评过期理处”。
解决方案
现在想到的解决方案有:
1.每次管理请求论评表列页面时,进先行“价评过期理处”,然后再列出论评表列。
这样做很明显的一个端弊就是率效太低,不斟酌。
2.应用定时任务,比如天天晨凌1点就去执行“价评过期理处”,这类做法是比较好的。
关于定时任务又有两种做法,一是应用PHP自带的sleep($interval) + while(true)(参考资料:http://blog.csdn.net/webdesman/article/details/4510372)
二是应用作操系统的划计任务。
第一种的话,占用源资较多,始终开着一个死循环。户用体验欠好
现在,选定了第二种定时任务。
编写php程序
这里的程序只是一个示例,并非一个完全的逻辑。
connec.php
<?php
/**
*connect.php
*--
*by:集成显卡 1053214511@qq.com
*2011-8-21--下昼12:15:20
*/
header("Content-Type:text/html;charset=UTF-8");
//义定一组于用链接的参数
define("MYSQL_SERVER", "localhost:3306");
define("MYSQL_USER", "root");
define("MYSQL_PASSWORD", "");
define("MYSQL_DATABASE", "human");//要链接并应用的数据库名
define("MYSQL_ENCODE", "UTF8");
/**
* 获得一个mysql的接连 ,回返这个接连,应用的是默许的置设
*/
function getMysqlConnection(){
//链接数据库
$conn=@mysql_connect(MYSQL_SERVER,MYSQL_USER,MYSQL_PASSWORD) or die("链接mysql数据库失败。误错信息:".mysql_error());
@mysql_select_db(MYSQL_DATABASE,$conn) or die ("没法找到指定的数据库:".MYSQL_DATABASE." 误错信息:".mysql_error());
mysql_query('SET NAMES '.MYSQL_ENCODE,$conn) or die('字符集置设误错'.mysql_error());
return $conn;
}
?>
然后应用链接 log.php:
青春是用意志的血滴和拼搏的汗水酿成的琼浆——历久弥香;青春是用不凋的希望和不灭的向往编织的彩虹——绚丽辉煌;青春是用永恒的执著和顽强的韧劲筑起的一道铜墙铁壁——固若金汤。
<?php
require_once 'connect.php';
/**
* 获得现在记载数
*/
function getLogCount(){
$sql="select count(*) from api_quote_log";
$conn=getMysqlConnection();
$result=mysql_query($sql,$conn) or die("sql语句执行错出:".mysql_error());
$row=mysql_fetch_assoc($result);
return $row['count(*)'];
}
/**
* #查询申请日期到前当日期超越3天的记载
*/
function getLogList(){
$logs=array();
$sql="select * from api_quote_log as Q where (NOW() > DATE_ADD(Q.addDate,INTERVAL 3 DAY))";
$conn=getMysqlConnection();
$result=mysql_query($sql, $conn) or die("sql 语句执行错出:".mysql_error($conn));
$index=0;
while(!!($row=mysql_fetch_array($result,MYSQL_ASSOC))){
$logs[$index++]=$row;
}
return $logs;
}
$count = getLogCount();
$info = date("Y-m-d H:i:s") . " 前当api_quote_log的记载数为 ".$count."\n";
$fp = fopen('D:/test.txt','a+');
fwrite($fp, "-----------------------------------------------\n");
fwrite($fp, $info);
$logList = getLogList();
foreach ($logList as $l){
$info = $l['addDate']." resultCode=".$l['resultCode']."\n";
fwrite($fp, $info);
}
fwrite($fp, "\n");
fclose($fp);
?>
这里的文件要应用绝对路径(php文件可以应用相对路径)。
connect.php 和 log.php 我都放在了 d盘。
建创划计任务
以windowXP sp3 为例,进入”控制面板“--》“任务划计”:
双击“添加任务划计”,在选择运行的应用程序时,选择 php.exe:
、
建创完成后:
接着配置要需执行我们刚刚建创的php文件:
在运行中输入路径就能够了。
结果验证
可以手动运行这个任务划计,打开test.txt:
运行确正。
文章结束给大家分享下程序员的一些笑话语录: 神灯新篇
一个程序员在海滩上发现了一盏神灯。他在灯上擦了几下,一个妖怪就从灯里跳出来说:“我是世界上法术最强的妖怪。我可以实现你的任何梦想,但现在,我只能满足你一个愿望。”程序员摊开了一幅中东地图说:“我想让中东得到永久的和平。”妖怪答道:“哦,我没办法。自打创世纪以来,那里的战火就没有停息过。这世上几乎没有我办不到的事,但这件事除外。”程序员于是说:“好吧,我是一个程序员,为许多用户编写过程序。你能让他们把需求表述得更清楚些,并且让我们的软件项目有那么一两次按进度按成本完成吗?”妖怪说:“唔,我们还是来看中东地图吧。”