php shell exec() выводится для получения текстового файла


Я пытаюсь запустить команду rate -c 192.168.122.0/24 на своем компьютере Centos и записать вывод этой команды в текстовый файл с помощью команды shell_exec('rate -c 192.168.122.0/24'); все еще безуспешно!!

Author: Tshepang, 2011-04-19

4 answers

Как вы забыли упомянуть, ваша команда предоставляет нескончаемый выходной поток. Чтобы прочитать вывод в режиме реального времени, вам необходимо использовать попен.

Пример с веб-сайта PHP:

$handle = popen('/path/to/executable 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);

Вы можете прочитать вывод процесса точно так же, как файл.

 1
Author: Matthieu Napoli, 2011-04-19 12:45:28

Если вам не нужен PHP, вы можете просто запустить его в оболочке:

rate -c 192.168.122.0/24 > file.txt

Если вам нужно запустить его с PHP:

shell_exec('rate -c 192.168.122.0/24 > file.txt');

Символ ">" перенаправляет вывод команды в файл.

 3
Author: Matthieu Napoli, 2011-04-19 11:39:05

Вы также можете получить вывод с помощью PHP, а затем сохранить его в текстовый файл

    $output = shell_exec('rate -c 192.168.122.0/24');
    $fh = fopen('output.txt','w');
    fwrite($fh,$output);
    fclose($fh);
 1
Author: fin1te, 2011-04-19 11:41:09
$path_to_file = 'path/to/your/file';
$write_command = 'rate -c 192.168.122.0/24 >> '.$path_to_file;
shell_exec($write_command);

Надеется, что это поможет. :D И это направит вас на верный путь. https://unix.stackexchange.com/a/127529/41966

 0
Author: Thusitha Sumanadasa, 2017-04-13 12:36:31