PHP文件内容是否有限制?
我正在尝试使用php文件获取内容来读取一个大文件(10M)PHP文件内容是否有限制?,php,file-get-contents,large-files,Php,File Get Contents,Large Files,我正在尝试使用php文件获取内容来读取一个大文件(10M) $file = 'http://www.remoteserver.com/test.txt'; $data = file_get_contents( $file ); var_dump ( $data ); 它倒回去了 string(32720) 然后输出,只显示文件的一部分。文件内容是否有限制?我试着做ini_设置(“内存限制”,“512M”),但没有成功 编辑:*忘了提及**这是一个远程文件 问题已解决::硬盘空间不足。修复了这
$file = 'http://www.remoteserver.com/test.txt';
$data = file_get_contents( $file );
var_dump ( $data );
它倒回去了
string(32720)
然后输出,只显示文件的一部分。文件内容是否有限制?我试着做ini_设置(“内存限制”,“512M”),但没有成功
编辑:*忘了提及**这是一个远程文件
问题已解决::硬盘空间不足。修复了这一问题,现在一切正常。假设要加载的文件内容在逻辑上以换行符分隔(例如:不是二进制文件),那么逐行读取可能会更好
$fp = fopen($path_to_file, "r");
$fileLines = array();
while (!feof($fp)){
array_push(fgets($fp),$fileContents);
}
fclose($$fp);
如果您真的需要将文件放在一个“块”中,则始终可以内爆()
(通过选择换行符)将数组恢复为单个字符串
参考-
filesize($file)
,在加载之后转储strlen($data)
。我有点好奇它会产生什么结果。你有没有试着对文件执行fread()操作?如果是这样,您是否遇到了相同的问题?请尝试使用浏览器下载文件,将其存储在本地,然后使用file_get_contents()缩小问题范围。这里唯一的限制应该是本地内存,但在这种情况下,您会从PHP收到一条错误消息(如果设置了显示错误)。。。32720非常接近32767,即最大4位有符号整数。这是否只是巧合,我不确定……我怀疑对于如此大的文件,它们是二进制的,所以fgets
可能不是一个好主意。@ale-好的观点。我已经澄清了关于所讨论文件的假设。@ale-(刚刚注意到)在OP提供的代码示例中,提供了一个.txt
扩展名。所以这可能毕竟是相关的。好的一点,我错过了扩展fgets()
也会随机截断大于16k的行(正如stream\u get\u line()
(或多或少,取决于您如何设置块大小),最好只使用fread()
如果你希望有很长的线路,你可以自己处理EOL/EOF。一周前,这实际上是以一种相当恶劣的方式咬了我的屁股。不过,我相信fgets()是(5.3+)二进制安全的,只要你注意很长的线路。