linux系统自带crontab计划任务,可以满足你的需求。
成都创新互联公司是专业的织金网站建设公司,织金接单;提供成都网站设计、成都做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行织金网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
编辑crontab配置文件的方法是:
crontab -e
编辑完成后,用:x组合键关闭并保存。不需要重启操作,时间到了以后,系统会自动调用定时任务。
示例,在凌晨4点重启lighthttpd:
0 4 * * * /usr/local/etc/rc.d/lighttpd restart
将命令的路径改为你写的备份脚本。
望采纳!
先说代码,我看了一下,代码没什么问题,至于你说的不备份,原因可能如下:
查询无结果,测试办法是在最外层的那个while语句结束后输出查询语句,即:
while ($t = mysql_fetch_array($q1))
{
//里面的代码
}
echo $mysql;//在这里输出查询结果,如果结果正常,则说明查询有结果
$filename = "autobackup.sql"; //存放路径,默认存放到项目最外层
然后就是另一个问题了,目标文件不可写,你可以参考下面这样的代码
$filename = "autobackup.sql"; //存放路径,默认存放到项目最外层
if(!file_exists($filename) || is_writable($filename))//如果文件不存在或可写
{
$fp = fopen($filename, 'w');//打开或创建可写文件
$mysql=str_replace("','','');","',null,null);",$mysql);
fputs($fp, $mysql);//写入
fclose($fp);
}
else
{
echo "文件 $filename 不存在或不可写";
}
如果尝试发现仍有问题,请再追问
1、如果服务器允许mysqldump 并且没有禁止PHP的shell_exec()这个函数的话
直接在PHP里面执行mysqldump就可以了。
2、通过mysql_query('show tables')的返回值遍历每个表,循环对每个表使用查询语句
select * into outfile '路径/文件名' from 表名
缺点是这样得到的是纯数据,恢复数据的时候你需要额外再写脚本
3、同样通过show tables返回表名,遍历每个表,通过select 语句查询,然后逐条结果处理,比如手工添加drop table 和create table 以及insert into等等,然后再写入文件。这样得到的备份数据是比较接近mysqldump的结果的,各种工具都可以用来恢复数据。缺点是如果数据库太大的话,效率不好说
使用mysqldump函数
mysqldump -u username -p dbname table1 table2 ... BackupName.sql
dbname参数表示数据库的名称
table1和table2参数表示需要备份的表的名称,为空则整个数据库备份;
BackupName.sql参数表设计备份文件的名称,文件名前面可以加上一个绝对路径。通常将数据库被分成一个后缀名为sql的文件。
备份数据库的主要过程:
切换到对应的数据库;
使用show create table tableName,获得表结构,写到文件中;
然后查询所有的表数据,循环生成相对应sql语句,写到文件中;
试运行生成的sql文件。