['file', '/dev/null', 'rb'], 1 => ['file', $filename, 'wb'], 2 => ['pipe', 'w']]; $environment = array_merge(getenv(), ['MYSQL_PWD' => (string) $db['password']]); $process = proc_open($command, $descriptors, $pipes, null, $environment, ['bypass_shell' => true]); if (!is_resource($process)) { fwrite(STDERR, "无法启动数据库备份。\n"); exit(1); } $errors = stream_get_contents($pipes[2]); fclose($pipes[2]); $exitCode = proc_close($process); if ($exitCode !== 0) { @unlink($filename); fwrite(STDERR, "备份失败:" . trim($errors) . "\n"); exit(1); } chmod($filename, 0600); $cutoff = time() - 14 * 86400; foreach (glob(rtrim($targetDirectory, '/') . '/tanwan-*.sql') ?: [] as $oldBackup) { if (is_file($oldBackup) && filemtime($oldBackup) < $cutoff) unlink($oldBackup); } fwrite(STDOUT, $filename . "\n");