gpt4 book ai didi

PHP 设置 proc_open 直接输出给用户

转载 作者:行者123 更新时间:2023-12-04 03:48:12 24 4
gpt4 key购买 nike

我正在使用带有 pdftk 的 proc_open 来用数据预填充一些表格,这工作得很好,但我不想将结果保存到文件然后读回文件,而是直接打印文件.我有这个工作,所以我没有任何问题。但我想将 proc_open 的输出直接定向到返回给用户的流,这样我就不必在 php 中将值保存在内存中。到目前为止,我有以下内容:

$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。如果有人知道直接打印流的功能,是否还有一种方法可以在不实际读取流的情况下获取流的字节长度。

最佳答案

既然没有人发布答案,我不妨发布我找到的答案。

用fopen模式w打开一个到php:​​//output的流,并使用stream_copy_to_stream将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]);

/* New Code */
if( $fout = fopen("php://output","w") ) {
stream_copy_to_stream($pipes[1],$fout);
fclose($fout);
}

fclose($pipes[1]);
$result = proc_close($process);
}

关于PHP 设置 proc_open 直接输出给用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14929612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com