Как запустить системную команду в браузере, используя PHP и Xampp? - PullRequest
2 голосов
/ 29 ноября 2010


У меня есть командная строка для резервного копирования БД и WNAT для запуска через браузер. Как я могу это сделать. Потому что, когда я выполняю приведенный ниже код с вводами, он не даст мне выход. если не получится.

$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile"; 
print system($command);

Ответы [ 3 ]

2 голосов
/ 29 ноября 2010

Похоже, что вы хотите, это passthru ()

В соответствии с документацией , она выведет вывод команды прямо обратно в браузер.

$ret_val = null;
header("Content-type: application/gzip");
passthru("mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip", $ret_code);
# the extra equals sign below makes sure $ret_val isn't null
if($ret_val !== 0) 
   echo "Failboat";

При этом это звучит как очень хрупкий способ делать резервные копии. Вам лучше сначала сохранить файл на диск и загрузить его отдельно. Если вы действительно хотите с этим справиться, попробуйте использовать tee, чтобы записать файл на диск при потоковой передаче его обратно в браузер (предупреждение, на самом деле это даже хуже)

1 голос
/ 29 ноября 2010

Я бы сказал, одна из этих функций system или exec . Если вам нужен выходной exec, будет лучше

system($command)

Просто для справки подпись функции из документа

string exec ( string $command [, array &$output [, int &$return_var ]] )

и быстрый фрагмент

exec($command, $output, $ret_var);
echo "return code: {$ret_var}" . PHP_EOL;
echo "output ------" . PHP_EOL;
foreach($output as $line){
    print $line . PHP_EOL;
}
0 голосов
/ 29 ноября 2010

Eigther используйте mysqladmin ( английская версия) или вы можете использовать вызов ajax (поверх javascript) на одной из своих страниц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...