一、自动执行 php 代码
1.1、新建auto.bat执行php代码
①、新建 auto.txt
在任意目录新建一份空的 auto.txt,这里我们在 F 盘根目录新建
②、在 auto.txt 的同级目录下新建 auto.php
$p = fopen('auto.txt', 'a');
$date = date('Y-m-d',time());
fwrite($p, $date);
fclose($p);
③、新建 auto.bat
什么是 .bat:一种简单的脚本,DOS 批处理则是基于 DOS 命令的,用来自动地批量地执行 DOS 命令以实现特定操作的脚本
注意 .bat 不要用"记事本"编辑,否则会因为编码的问题执行失败,推荐用 Sublime Text 或者 EditPlus
用 auto.bat 执行 auto.php
"D:\Program Files\phpStudy\php70n\php.exe" -q "F:\auto.php"
备注:"D:\Program Files\phpStudy\php70n\php.exe" 为本地 php.exe 的所在目录
④ 如果想让 cmd 执行后不关闭,在 auto.bat 中添加 pause(换行添加)
"D:\Program Files\phpStudy\php70n\php.exe" -q "F:\auto.php"
pause
⑤、手动执行 auto.bat
双击 auto.bat,执行完毕后打开 auto.txt,你会发现 auto.txt 多了一些文本
1.2、创建 windows 计划任务
①、点击 windows 系统左下角的“开始”按钮,搜索“任务计划”后打开
②、在右侧点击“创建基本任务”
名称:test ; 描述:测试任务计划,点击下一步
触发器:每天 ;开始于当前时间的下一分钟,我当前时间是10:19,下一分钟就是 10:20,每隔一天发生一次,点击下一步
操作:启动程序
选择auto.bat
③、测试是否自动执行
10:20分时,打开 auto.txt 查看执行结果
如果遇到需要输入密码的地方,输入服务器的密码!!!
二、PHP 定时完成数据库的备份
2.1、手动备份数据库(表的)方法
①、备份数据
cmd控制台:
mysqldump –u root –proot 数据库 [表名1 表名2..] > 文件路径
比如: 把temp数据库备份到 d:\temp.bak
mysqldump –u root –proot temp > d:\mysqlBackup\temp.bak
如果你希望备份是,数据库的某几张表
mysqldump –u root –prot temp dept > d:\mysqlBackup\temp.dept.bak
②、如何使用备份文件恢复数据
mysql控制台:
source d:\mysqlBackup\temp.dept.bak
2.2、使用定时器来自动完成
把备份数据库的指令,写入到 bat文件, 然后通过任务管理器去定时调用 bat文件.
mytask.bat 内容是:
"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump" -u root -proot temp dept > d:\temp.dept.bak
注:如果你的 mysqldump.exe 文件路径有空格,则一定要使用 "" 包括.
把 mytask.bat 做成一个任务,并定时调用在 2:00 调用一次。
现在问题是,每次都是覆盖原来的备份文件,不利用我们分时间段进行备份。
2.3、利用 bat 执行 php文件
①、mytask2.bat
C:\myenv\php-5.3.5\php.exe C:\myenv\apache\htdocs\mytask.php
②、mytask.php代码:
$db = 'yilishabai';
$time = time();
$file = 'E:\mysqlBackup\\'.$db.'_'.date("Ymd",$time).'.bak';
if(!file_exists($file)){
$command = '"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump" -uroot -proot '.$db.'>'.$file;
exec($command);
//只备份三天,所以删除三天前的备份
$delFile = 'del E:\mysqlBackup\\'.$db.'_'.date("Ymd",$time-3*3600*24).'.bak';
exec($delFile);
}
③、exec语法: string exec(string command, string [array], int [return_var]);
exec返回值: 字符串
Exec参数说明
Command – 需要执行的命令
Array – 是输出值
return_var –是返回值0或1,如果返回0则执行成功,返回1则执行失败。
测试是否有权限执行 exec 命令
exec('cd c:', $output,$return_val);
print_r($return_val);
如果返回 0 则表示有权限执行,如果返回 1 则表示没有权限。那么你就要修改服务器配置。
④、IIS cmd 权限配置
IIS 的配置,进入你要配置的网站,如下图:右键点击权限
查看 iis 用户,这里为 Users ,如果没有则添加(添加后需要重启服务器)
右键 "C:\WINDOWS\system32\cmd.exe"
添加 USers 用户,勾选“读取和运行权限”。
⑤、php.ini 配置
打开 php.ini 中,如果 disable_functions 中有 exec,则将其去掉,并重启服务器