php操作大文件 用fopen fseek 等操作超过2g的文件就会出错php现在只支持到2g的文件请问怎么解决呢,对文件大小没有限制呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不要一次全部读入到内存中,PHP是有内存限制的。使用fseek定位文件指针,仅读取需要的部分,及时释放。 fseek最大偏移就是2g了,读2g后面的读不到啊 32位php,2G 约为 PHP_INT_MAX/pow(1024,3),再往前+1就溢出了. $fp = fopen ("file2g.txt", "r");$content = '';$test = false;while (!feof($handle)) { $r = fread($handle, 1); //比如每次读一个字节 if($r=="\n"){ //假设你是用\n对字符串进行分割的 if($content=='aaaa'){ $test=true; } $content = ''; }else{ $content .= $r; }}fclose($handle);这就是指针读取了,你的文件总是有规则的吧,按规则切分开了,做你要的判断,如果你把读取的所有字符串直接赋值给一个变量的肯定也是不能操作的了2g的文件,建议最好分割成多文件进行操作 LZ不是扯淡么,你想支持2G以上的文件读取就不要用32位的系统,人家foolbirdflyfirst已经非常专业的告诉你答案了,你还在问个鸟,实话告诉你,你想在32位系统下读2G以上的文件就好比你现在只有1万快钱你又不贷款想买100万的房子,可能么? 首先32位系统下通过php本身是不可以读取大于2g的文件,但是通过写php的扩展程序时可以的,windows下的话使用vc的一些读取文件的接口就可以,linux系统的话那就更简单了。但是这种解决方法可移植性太差。我现在是问一下有没有其他的解决方法。 如何把MYSQL中的数据写入到Memcached中? javascript空白验证还是不行 这个问题的答案为什么事12 求租:数组累加 如何利用美国主机访问中国无法访问的图片? 请问一下注册时检查用户名的正则表达式该怎么写 如何在一个PHP里执行一条或者几条语句,让另一个php刷新??? javascript 中得到一个变量的值,用<a href=>怎么传给另一个页面。 求助一个正则匹配中文的问题 FTP映射网络位置到本地电脑 如何将一个用户的行为和数据通知到另外一个用户的页面上去 php 怎么让数字字符做索引
使用fseek定位文件指针,仅读取需要的部分,及时释放。
$fp = fopen ("file2g.txt", "r");
$content = '';
$test = false;
while (!feof($handle)) {
$r = fread($handle, 1); //比如每次读一个字节
if($r=="\n"){
//假设你是用\n对字符串进行分割的
if($content=='aaaa'){
$test=true;
}
$content = '';
}else{
$content .= $r;
}
}
fclose($handle);这就是指针读取了,你的文件总是有规则的吧,按规则切分开了,做你要的判断,如果你把读取的所有字符串直接赋值给一个变量的肯定也是不能操作的了2g的文件,建议最好分割成多文件进行操作