Я использую proc_open с pdftk, чтобы предварительно заполнить некоторые формы данными, это работает очень хорошо, но вместо сохранения результата в файл и последующего чтения файла, d хотел бы распечатать файл напрямую. У меня это работает, поэтому у меня нет никаких проблем. Но я бы хотел направить вывод proc_open прямо в поток, возвращенный пользователю, так что мне не нужно удерживать значение в памяти в php. До сих пор у меня есть следующие:PHP set proc_open для вывода непосредственно пользователю
$descriptorspec = array(
0 => array("pipe","r"),
1 => array("pipe","w"),
2 => array("file","error.txt","a"));
$process = proc_open($command, $descriptorspec, $pipes);
if(is_resource($process)) {
fwrite($pipes[0], $fdf);
fclose($pipes[0]);
echo stream_get_contents($pipes[1]));
fclose($pipes[1]);
proc_close($process);
}
Я хотел бы направить результат непосредственно к использованию, как вы получите в приведенном выше коде, без фактического сохранения значения в переменной, а затем печатать ее. Есть ли способ прямого потока потока в выходе php непосредственно на выход. Я хотел бы сделать это, чтобы сохранить память и сократить время, необходимое для запуска кода.
Кто-нибудь знает о функции для потока в php, который напрямую выводит результат потока. Или есть настройка для proc_open, которая делает это. В любом случае, я боюсь, что это может вообще не работать, поскольку мне может понадобиться добавить заголовок длины содержимого на вывод, чтобы отобразить PDF напрямую. Если кто-либо знает о функции для печати потока непосредственно, есть также способ получить длину байта потока без фактического его чтения.
http://php.net/manual/en/function.stream-copy-to-stream.php – kyall
http://php.net/manual/en/function.stream-copy-to- stream.php stream_copy_to_stream, кажется, служит, где поток назначения создается с помощью fopen («php: // output», «w») Попытка найти способ получить длину потока может быть и не нужной, однако чтобы проверить, может ли он отображаться в браузере без набора длины содержимого. Извините за пробег комментариев, первый комментарий, отправленный случайно, меня прервали события RL, не удалось закончить редактирование, пока не истечет 5-минутная эпоха редактирования. – kyall