我试图捕获输出,fputcsv()
以便gzwrite()
用于实际写入制表符分隔文件.基本上,我正在查询数据库,我想把这些行放到一个gzip压缩的CSV文件中,我宁愿使用而fputcsv()
不是实际附加"\t"
到"\n"
任何地方.我可以通过输出缓冲或类似的东西以某种方式做到这一点吗?
这是我所拥有的基本概要:
$results = get_data_from_db();
$fp = gzopen($file_name, 'w');
if($fp) {
foreach ($results as $row) {
???//something with gzwrite() ?
}
gzclose($fp);
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑:我的理解是,gzwrite()
需要使用实际写入文件,以便实际上是gzip - 这是不正确的?
Dan*_*oap 16
正如在php.net上读到的,你可以尝试这个小技巧:
<?php
// output up to 5MB is kept in memory, if it becomes bigger
// it will automatically be written to a temporary file
$csv = fopen('php://temp/maxmemory:'. (5*1024*1024), 'r+');
fputcsv($csv, array('blah','blah'));
rewind($csv);
// put it all in a variable
$output = stream_get_contents($csv);
?>
Run Code Online (Sandbox Code Playgroud)
这实际上是你试图避免的(捕获输出),但捕获是一个非常强大的工具,所以为什么不使用它呢?