file_get_contents分段读取文件

  function data(){
    	$file = 'bigdata.txt';
    	if(file_exists($file)){
    		unlink($file);
    	}
    	touch($file);
    	$str = '';
    	for($i = 0; $i < 1000 ; $i++){
    		$str .= rand(1000,9999) . ',';
    	}
    	file_put_contents($file, $str, FILE_APPEND);
    }
    
    function getByLen($file, $start, $len){
    	$result = [];
    	while(true){
    		// 注意$start和$len均为字节数,一个英文字符为1字节,一个中文为3字节
    		$data = file_get_contents($file, NULL, NULL, $start, $len);
    		if(!$data){
    			break;
    		}
    		$arr = explode(',', $data);
    		echo join(',', $arr).PHP_EOL.PHP_EOL;
    		// 去除掉最好一个元素,因为可能不完整
    		$end = array_pop($arr);
    		$end_len = strlen($end);
    
    		$start = $start + $len - $end_len;
    	}
    }
    
    // 每次读取999个字节
    getByLen('bigdata.txt', 0, 999);
发布了412 篇原创文章 · 获赞 25 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/raoxiaoya/article/details/94572746