php: Захватывает вывод данных из stdout из инструментов cli? - PullRequest
0 голосов
/ 22 января 2010

Можно ли получить выходные данные стандартного вывода из инструментов командной строки в php?

Пример:

Я хочу загрузить динамически созданный сервером набор аудиофайлов на клиент. Инструмент SOX позволяет мне смешивать входные mp3-файлы и отправлять результат в стандартный поток. Могу ли я взять этот микс и сразу же загрузить его без необходимости сначала сохранять его как временный файл?

Ответы [ 2 ]

0 голосов
/ 22 января 2010

Существует функция passthru (), которая будет передавать двоичные данные непосредственно в браузер клиента. Просто убедитесь, что ваш php-скрипт поставил правильный заголовок перед передачей данных, например, тип контента и т. Д.

0 голосов
/ 22 января 2010

Я думаю, вы могли бы использовать буфер в памяти для хранения микса MP3, а затем использовать fsockopen, чтобы открыть поток на сервер, на который вы хотите его загрузить, и затем вручную написать заголовки, необходимые для загрузки файла.

Для этого вам необходимо воспроизвести тот же тип запроса, который браузер обычно создает при загрузке файла.

Вот ссылка на fsockopen, и комментарии пользователей содержат пример того, как выполнить такую ​​задачу: http://php.net/manual/en/function.fsockopen.php

Другим способом достижения этого является использование curl для загрузки файла. Я не использовал cURL для этого, но вот ссылка на пример: http://www.akchauhan.com/how-upload-file-using-curl/

...