美文网首页
浅谈Linux导出数据库的PHP定时脚本

浅谈Linux导出数据库的PHP定时脚本

作者: 小白的程序猿 | 来源:发表于2019-06-14 14:06 被阅读0次

1. 首先写一个导出数据库的PHP脚本(导出数据库,这里主要用到的是exec函数)。

<?php
    date_default_timezone_set('PRC');
    // 数据库的账号
    $cfg_dbuser = "root";
    // 数据库的密码
    $cfg_dbpwd  = "root";
    // 要导出的数据库
    $cfg_dbname = "videos"; 
    // 设置保存文件名 
    $filename = date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql"; 
    // 获取当前页面文件路径,SQL文件就导出到此文件夹内 
    $tmpFile  = (dirname(__FILE__))."/".$filename; 
    // 用mysqldump命令导出数据库 
    exec("mysqldump -u$cfg_dbuser -p$cfg_dbpwd --default-character-set=utf8 $cfg_dbname > ".$tmpFile); 
    // 打开文件 
    $file = fopen($tmpFile, "r");
    echo fread($file,filesize($tmpFile)); 
    fclose($file); 
    exit;

2. 接着直接把该PHP脚本文件放到Linux服务器上(我这里是放到centos7上)的项目上,我的配置是lnmp模式,如果所示。

image.png

3. 然后在服务器或虚拟机测试运行下这个脚本,看一下有没有问题(重要一步)如图所示为执行成功的页面,导出的数据库文件路径可以自己定义。

image.png
注意:命令是:/usr/local/php/bin/php db_backup.php,前面的/usr/local/php/bin/php是你安装php的可执行文件的目录(不一定每一个的都一样),后面的db_backup.php是你的脚本文件的名称。

4. 下一步就是把这个PHP脚本加到定时任务上

crontab -e  (查看linux上有哪些定时任务)

如图所示:


image.png

注意:

50 12 * * * /usr/local/php/bin/php /home/wwwroot/default/db_backup.php
讲解:
50 12 * * *                 -- 这部分是定时任务的设置时间(测试可以以一分钟来测试是否有执行)
/usr/local/php/bin/php      -- 这部分是安装php的可执行文件的路径
/home/wwwroot/default/db_backup.php   --这部分是PHP脚本的绝对路径

过了一分钟后,查看是否有导出数据库的文件


image.png
发现已经导出成功了,到这里就完成了。(这里有注意一点,写的脚本必须是unix下的格式,不然可能会报错)报错方式如下:unexpected end of file或syntax error near unexpected token `fi'等

具体解决方式如下:

vim db_backup.php (编辑脚本文件)
image.png
:set ff  (查看文件的格式,如果是unix就把没问题,如果是dos的就要改成unix)
:set ff=unix  (把文件格式改成unix)
image.png

5. 补充linux的部分命令:

5.1. 安装crontab命令:

yum install crontabs

5.2. 查看crontab服务状态:

service crond status

5.3. 手动启动crontab服务:

service crond start

5.4. 加入开机自动启动:

chkconfig –level 35 crond on

5.5. crontab命令:

-e  编辑该用户的计时器设置。
-l  列出该用户的计时器设置。
-r  删除该用户的计时器设置。
-u   <用户名称>  指定要设定计时器的用户名称。

5.6. crontab 格式:

基本格式 :
分钟   小时   日   月   星期   命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列 表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

记住几个特殊符号的含义: 
“*”代表取值范围内的数字, 
“/”代表”每”, 
“-”代表从某个数字到某个数字, 
“,”分开几个离散的数字

 Use the hash sign to prefix a comment
 +—————- minute (0 – 59)
 | +————- hour (0 – 23)
 | | +———- day of month (1 – 31)
 | | | +——- month (1 – 12)
 | | | | +—- day of week (0 – 7) (Sunday=0 or 7)
 | | | | |
 * * * * * command to be executed

以上完成的操作如有不正确的地方还望诸位多多指教

相关文章

网友评论

      本文标题:浅谈Linux导出数据库的PHP定时脚本

      本文链接:https://www.haomeiwen.com/subject/pgeufctx.html