在PHP4.4.1中,我注意到gzfile每行只读取最多8190字节。我有一个20K的SQL查询被分成3部分——我想知道为什么SQL服务器会报错。
使用file()命令读取未压缩的文件按预期工作。
(PHP 4, PHP 5, PHP 7, PHP 8)
gzfile — 将整个gz文件读取到数组中
包含文件的数组,每单元格一行,包括空行,并保留换行符,或者在失败时返回false
。
示例 #1 gzfile() 示例
<?php
$lines = gzfile('somefile.gz');
foreach ($lines as $line) {
echo $line;
}
?>
在PHP4.4.1中,我注意到gzfile每行只读取最多8190字节。我有一个20K的SQL查询被分成3部分——我想知道为什么SQL服务器会报错。
使用file()命令读取未压缩的文件按预期工作。
一种更快的方法将压缩的gzip文件加载到字符串中
<?php
function gzfile_get_contents($filename, $use_include_path = 0)
{
//文件不存在
if( !@file_exists($filename) )
{ return false; }
//读取并将数组合并以生成单行字符串
$data = gzfile($filename, $use_include_path);
$data = implode($data);
return $data;
}
?>
此函数的功能类似于gzfile(),但它将文件返回为字符串而不是数组,并且与readgzfile相比不会将其写入标准输出。
注意:与通常的文件函数不同,filesize在这里不起作用,因为gzread的长度参数指的是未压缩的长度,而filesize返回的是压缩文件的大小。
<?php
function gzfile_get_contents($filename, $use_include_path = 0) {
$file = @gzopen($filename, 'rb', $use_include_path);
if ($file) {
$data = '';
while (!gzeof($file)) {
$data .= gzread($file, 1024);
}
gzclose($file);
}
return $data;
}
?>