• 链接数据库window平台下使用任务计划定时执行php进行数据库处理


    今天始终在查找链接数据库之类的问题,上午正好有机会和大家分享一下.

        

    需求背景

        在一个论坛系统中,户用交提的论评如果管理核审才会示显。同时,有这么一个则规,如果此条论评在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:

        链接和数据库

        

        运行确正。

    文章结束给大家分享下程序员的一些笑话语录: 神灯新篇
    一个程序员在海滩上发现了一盏神灯。他在灯上擦了几下,一个妖怪就从灯里跳出来说:“我是世界上法术最强的妖怪。我可以实现你的任何梦想,但现在,我只能满足你一个愿望。”程序员摊开了一幅中东地图说:“我想让中东得到永久的和平。”妖怪答道:“哦,我没办法。自打创世纪以来,那里的战火就没有停息过。这世上几乎没有我办不到的事,但这件事除外。”程序员于是说:“好吧,我是一个程序员,为许多用户编写过程序。你能让他们把需求表述得更清楚些,并且让我们的软件项目有那么一两次按进度按成本完成吗?”妖怪说:“唔,我们还是来看中东地图吧。”

  • 相关阅读:
    Saiku相关异常处理(十五)
    Saiku登录源码追踪.(十三)
    Saiku调用WS接口(十四)
    Saiku本地编译运行后Debug调试(十二)
    Windows查看Java内存使用情况
    Saiku免登录嵌入其他系统使用(十一)
    Saiku更改源代码实现默认查询一天的数据(十)
    Saiku关于MDX过滤的使用-默认显示最近一周的数据(九)
    Saiku部分函数解析(八)
    Saiku缓存处理(七)
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3063610.html
Copyright © 2020-2023  润新知