有时候,因为业务需求,需要一些定时跑的脚本。比如一些脚本5min跑一次,10min跑一次,1day跑一次… 随着这样的脚本增多,我们就需要对这些定时的脚本进行管理,不能在crontab那里添加了太多的信息,而且每次新增一个定时脚本,就打开服务器去修改一次crontab,也比较麻烦。
一个办法就是,crontab定时跑某几个脚本,比如去执行5min.php。然后在这个脚本里,将要执行的脚本路径配置在里面,运用php函数exec执行到。
在linux下
$php_exec = "/usr/local/php5/bin/php"; $www_path = "/var/www/script/crontab"; $runing = array( /test/test.php, ); foreach($runing as $task){ exec($php_exec." ".$www_path.$task); }
我是在windows下开发的,所以会在XP先试下
$exec = exec("d:\wamp\bin\php\php5.4.16\php.exe d:\htdoc\dev\Test\test.php > d:\htdoc\dev\Test\execoutput.txt 2>&1 &",$array,$return_var); var_dump($exec); var_dump($array); echo '<br />'; var_dump($return_var);die;
这里路径信息一定得是 '\'这样的,php路径信息,必须把php.exe这个加入
'> d:\htdoc\dev\Test\execoutput.txt 2>&1 &' 这一截是把执行到的脚本结果写到文件中,如果有错误信息,也会写入到里面 -> 这个对于调试,是非常有用的。 使用时,请一定记得将后面的参数'2>&1 &'也带上.