Thisisfreesoftware,andyouarewelcometomodifyandredistributeit
undertheGPLlicense
PHPShellscriptforthebackupMySQLdatabase.
Usage:
canbedatabasenameyouwouldliketobackup.
Withthe--help,or-?options,youcangetthishelpandexit.
添加一个任务计划,在(如图2所示)这一步输入命令:
复制代码代码如下:
D:php4php.exe-qD:php4backup.phpdatabasename
时间设置为每天运行一次,之后运行这个任务。
最后会在d:php4目录下生成一个以数据库名和当前时间组成的rar文件。
恭喜你!大功告成了!
其实备份方法有好多种,读者可根据自己喜欢的去做!
以上是原著.结合本人实贱,补充说明如下:
假若出现错误:
在试着设置任务账户信息时出现错误
指定的错误是:
0x80070005:拒绝访问
您没有运行所恳求的操作的权限
在里面'"4.接出来系统将会要求用户设置适当的用户名及密码,便于系统今后能手动加以运行".这儿最好用"system"用户,密码可为空.
这个system的权限十分之高,比你的administrator还要高,所以你在运行命令的时侯千万不要乱来,这个而且哪些提示都没有都会无条件执行的,这个权限下你kill核心进程都行.
前面2、添加一个任务计划,在这一步输入命令:
复制代码代码如下:
D:php4php.exe-qD:php4test.php
正确方式应为
复制代码代码如下:
"D:php4php.exe"-q"D:php4test.php"
即路径要用双冒号括住.
近来做了几个PHP的游戏项目,有棋牌游戏也有rpg游戏,其中都或多或少的须要一些定时更新信息的机制。例如棋牌游戏的玩家超时检查。rpg游戏中用到的就更多了,怪物刷新、自动回血、任务过期、排行榜刷新等等。由于PHP没有显存留驻程序,所以在处理上有一些困难。
我参考了一些同行的实现方式,一般的做法是依据具体项目的须要,用c++、python、java等写一个辅助程序,定时对数据库进行更新。但
是这样做很麻烦。首先,这种辅助程序须要懂另外一门语言的程序员介入,势必会降低一定开发成本和风险。第二,不同语言程序员之间联调很麻烦,进度很慢,由
于辅助程序与前台之间的关系很紧密,基本上须要同时开发,一起调试。
我在项目中采用了一种定时执行任务的方式linux计划任务执行url,自己觉得这个方案比较好,属于一劳永逸型的,把所有代码全都交给PHP那边。
首先在数据库中,定义一个名为task的表,上面有两个数组exectime和
url。其中exectime是一个unix类型的时间,url是字符串型的。每条数据都代表一个任务linux虚拟机,具体意义是“这条任务在exectime时执行,
执行的地址为url”。辅助程序会每隔一秒钟监视一次这个表,把当前时间对比表中每位任务的时间,假如时间达到,则恳求该url,而后任务执行完成,删掉
这条任务。这般循环往复。
这样做的用处是PHP程序开发人员可以很自由的在她们想要的时间执行她们想要执行的网页。并且这个程序只须要写一次,放在任何类似项目中都可以挺好的使用。
我将这个程序弄成了windows服务和archlinux的Daemon,这样就实现了整个项目的跨平台。
补充内容:
任务的开启是这样的,我们做了一个类似小型网游的服务器开关界面,登入游戏后台后红旗linux6.0,到服务器控制页面,可以查看当前服务器的运行状态,可以开启或则关掉服务器。开启服务器则是把相关任务插入到任务列表中linux计划任务执行url,关掉服务器是把任务列表清空。是人工方式的。
任务的重复开启,由于这种任务都是由php插入到任务表中去的,但是任务表中的每条任务都是执行一次就由辅助程序删掉的,所以每位任务只能执行一次。假如有任务须要循环执行,这么就只能是通过在执行这个任务(即任务的url)的php代码上面,再把他自己重新插入到任务列表中去。
任务的超时,任务超时分为两种,数据表中,任务的执行之间超时,一种是恳求该任务页面超时。第一种情况不会发生,由于辅助程序每次都执行大于等于当前时间的所有任务。第二种情况,辅助程序会手动判定这个页面的访问是否成功,假如返回服务器错误或难以联接等,就保留此任务,不删掉,等到上次循环时再尝试执行。