如何使用PHP函数触发WP CLI DB导出?

时间:2020-08-24 作者:BlueDogRanch

我想使用WP-CLI导出数据库-使用wp db export - 创建备份。我还需要使用cron来控制备份计划。WP-CLI安装在我的托管主机上,我可以通过SSH, 但我不能用cron 直接在我的服务器上。

为了使用我自己的cron作业来安排备份,我需要使用插件WP Crontrol来添加和编辑cron 工作;该插件使用函数作为add_action, i、 e。my_backup_cron 开火my_backup_function:

这是插件使用的格式:

add_action( \'my_backup_cron\', \'my_backup_function\' );

运行WP-CLI命令的函数可以是标准函数,即functions.php

function my_backup_function() {
    wp_mail( \'[email protected]\', \'WP Crontrol\', \'WP Crontrol rocks!\' );
}
但是如何转换WP-CLI命令-例如wp --path=/var/www/ db export, 与路径和其他参数一起-转换为类似的函数my_backup_function?

1 个回复
SO网友:Pat J

WP-CLI可以评估PHP文件。

看见wp eval-file {PHP file name} 有关详细信息,但基本上您:

编写一个PHP文件,其中包含您希望在WordPress上下文中执行的命令(假设您调用它myfile.php)使用WP-CLI运行它:wp eval-file myfile.php如果需要安排时间,可以使用cron, Windows调度程序,或本地操作系统提供的任何用于调度任务的程序。

更新1重新阅读您的问题时,这可能更符合您的要求(本质上,您希望在计划的时间运行shell脚本)。

创建一个shell脚本(假设它位于/home/you/wp-backup.sh:

#!/bin/sh
/usr/local/bin/wp  --path=/var/www/ db export
将该脚本添加到crontab 使用crontab -e:

0 0 * * * /bin/sh /home/you/wp-backup.sh
。。。每天午夜都会运行作业。(请参见crontab quick reference 更多选项。)

这还假设sh 外壳位于/bin/shwp 位于/usr/local/bin/wp. 如果没有,请相应调整代码。

更新2根据评论,您需要的是如何模拟wp db export 在WordPress上下文中。恐怕我有个坏消息。

查看wp db source, 看来export command 基本上使用PHPexec() 要运行的命令mysqldump. 我认为你不应该效仿这一点——我觉得有些安全专家一想到这一点就感到畏缩。

确实存在可以导出数据库的WordPress备份插件;您可以查看它们(或者,如果它们是开源的,请检查它们的代码,看看其中是否有任何东西可以帮助您)。