在 PHP4.4.1 中,我注意到 gzfile 每次只读取最多 8190 字节。我有一个 20K 的 SQL 查询,它被分成 3 部分 - 并且想知道为什么 SQL 服务器会抱怨。
使用 file() 命令读取未压缩文件按预期工作。
(PHP 4, PHP 5, PHP 7, PHP 8)
gzfile — 将整个 gz 文件读入数组
此函数与 readgzfile() 相同,只是它以数组形式返回文件。
一个包含文件的数组,每行一个单元,包括空行,并且带有换行符,或者在失败时为 false
。
示例 #1 gzfile() 示例
<?php
$lines = gzfile('somefile.gz');
foreach ($lines as $line) {
echo $line;
}
?>
在 PHP4.4.1 中,我注意到 gzfile 每次只读取最多 8190 字节。我有一个 20K 的 SQL 查询,它被分成 3 部分 - 并且想知道为什么 SQL 服务器会抱怨。
使用 file() 命令读取未压缩文件按预期工作。
一种更快的方法将 gziped 文件加载到字符串中
<?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;
}
?>