See below for solution.
I am running mysqldumpas part of a PHP script called using a cron job.
Is it possible to return stderrmysqldump from the command, perhaps assign it to a variable that can be read directly? Or can I assign a stderrbutton outputor return_varcommand exec()?
Used main commands:
$dump_cmd = 'mysqldump -u username -pPassword db_name --tables db_table --where="field1 = abc" | gzip -c > dumpfile.sql.gz';
exec( $dump_cmd, $dump_cmd_output, $dump_cmd_return_var );
outputand return_varfrom exec()do not help:
$dump_cmd_output empty because the output is passed to gzip.
$dump_cmd_return_var shows the return status from gzip.
I know other approaches to see if there were any errors that occurred while starting mysqldump:
gzipping , $dump_cmd_return_var , gzip .
$dump_cmd = 'mysqldump -u username -pPassword db_name --tables db_table --where="field1 = abc" --result-file="dumpfile.sql"';
$zip_cmd = 'gzip dumpfile.sql';
exec( $dump_cmd, $dump_cmd_output, $dump_cmd_return_var );
if($dump_cmd_return_var == 0) {
exec( $zip_cmd, $zip_cmd_output, $zip_cmd_return_var );
}
stderr mysqldump --log-error=dump_errors.txt mysqldump:
$dump_cmd = 'mysqldump -u username -pPassword db_name --tables db_table --where="field1 = abc" --log-error=dump_errors.txt | gzip -c > dumpfile.sql.gz';
, stderr 2> dump_errors.txt:
$dump_cmd = 'mysqldump -u username -pPassword db_name --tables db_table --where="field1 = abc" 2> dump_errors.txt | gzip -c > dumpfile.sql.gz';
proc_open(). , , exec(), (return_var) , gzip.
( ), - , script, , .
:
@user1281385 - . , :
"bash PIPESTATUS [0]"
(mysqldump, gzip). , :
Bash - pipe
:
$dump_cmd = 'mysqldump -u username -pPassword db_name --tables db_table --where="field1 = abc" | gzip -c > dumpfile.sql.gz';
system("bash -c '".$dump_cmd." ; exit \${PIPESTATUS[0]}'", $dump_cmd_return);
if($dump_cmd_return == 0) {
Do some other stuff;
}
, mysqldump , ( [0]) PIPESTATUS.