我正在使用mysqldump来备份我的mysql数据库,并把它放在一个cron作业下。我想测试它的成功或失败,并希望它在cron作业电子邮件中回应成功或失败消息但是失败了吗?请帮帮我...
要通过什么命令?我这样做但失败了:
在我的php备份脚本中,我包括:
$testvar = '
if [ "$?" -eq 0 ]
then
echo "Success"
else
echo "Mysqldump encountered a problem look in database.err for information"
fi
';
exec($testvar);
我的服务器说:意外的文件结束
SCRIPT:
$creatBackup = 'mysqldump -uabc -p password mydb > myfile '.
'if [ "$?" -eq 0 ]; then
eho "Success"
else echo "Mysqldump encountered a problem"
fi
';
$BackupMessage = exec($creatBackup);
echo $BackupMessage;
答案 0 :(得分:3)
您正尝试使用exec
运行bash脚本内容。那不对; exec
用于运行命令或脚本文件,而不是shell脚本。
我认为有两种方法可以解决这个问题:
1)将脚本内容保存到bash文件并使用exec
运行:
/var/www/scripts/script.sh:
#!/bin/bash
mysqldump -uabc -p password mydb > myfile
if [ "$?" -eq 0 ]; then
echo "Success"
else
echo "Mysqldump encountered a problem"
fi
PHP:
$creatBackup = '/var/www/scripts/script.sh';
$BackupMessage = exec($creatBackup);
echo $BackupMessage;
2)另一种方法是不仅捕获脚本输出,还捕获标准错误(检查第三个exec
parameter):
$creatBackup = 'mysqldump -uabc -p password mydb > myfile';
exec($creatBackup, $output, $returnVar);
var_dump($output, $returnVar);
答案 1 :(得分:1)
在类似的帖子中回答,但问题相同。通过PHP抓取mysqldumps的错误消息:mysqldump via PHP
答案 2 :(得分:0)
如果您在php备份脚本中包含引用的代码,则表示您错误地调用了'exec'函数,该函数需要引用外部程序。 '$ testvar'变量的内容似乎是shell脚本(sh或bash),而不是外部脚本名称(和文件路径)。
以下shell脚本将运行mysqldump命令,可以通过cron执行,以向您提供数据库转储成功或失败的电子邮件通知。您需要调整PHP脚本以实际创建mysqldump的备份文件。
#!/bin/sh
if /usr/local/mysql/bin/mysqldump -u root -pyourpassword yourdatabasename
then
echo 'Success'
else
echo 'Mysqldump encountered a problem look in database.err for information'
fi
希望这有帮助!
答案 3 :(得分:0)
我认为mysqldump的退出代码会对你有帮助。成功时会返回0,失败时会返回任何其他值。
php function passthru在第二个参数中返回此值。