Как разбить большой файл со строками на маленькие?

Не понимаю почему при делении на маленькие файлы создаются пустые ???

$make_key = '10';
$cs = 0; //счетчик вход. файлов
$files = file("./data/phone.dat") or die ("Нету файла для крон !...");
foreach ($files as $file) {
	
	$cl = 0; //текущая строка
	$cf = 0; //текущий файл (выходной)

	$outdir = './data3/';
	$source = fopen($file, 'r');	
	$outhndl = fopen($outdir.'phone-'.$cs.'-'.$cf.'.dat', 'w');
	while (!feof($source)) {
		fputs($outhndl, fgets($source, 4096));//записываем в новый файл что считали с входного
		$cl++;
		if ($cl == $make_key){//как только набралось N строк
			$cl = 0;

			$cf++;
			fclose($outhndl);//закрываем выходной файл
			$outhndl = fopen($outdir.'phone-'.$cs.'-'.$cf.'.dat', 'w');//открываем новый...

		} //end if
		
	} //end while
	$cs++;
	fclose($source);
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 1
politon
@politon
HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
Вы открываете новый выходной файл внутри цикла while, но не записываете в него данные, пока не достигнете условия $cl == $make_key.
$make_key = 10;
$cs = 0; //счетчик вход. файлов
$files = file("./data/phone.dat") or die ("Нету файла для крон !...");
foreach ($files as $file) {
  $cl = 0; //текущая строка
  $cf = 0; //текущий файл (выходной)
  $outdir = './data3/';
  $source = fopen($file, 'r');  
  $outhndl = fopen($outdir.'phone-'.$cs.'-'.$cf.'.dat', 'w');
  while (!feof($source)) {
    fputs($outhndl, fgets($source, 4096)); //записываем в новый файл что считали с входного
    $cl++;
    if ($cl == $make_key) { //как только набралось N строк
      $cl = 0;
      $cf++;
      fclose($outhndl); //закрываем выходной файл
      $outhndl = fopen($outdir.'phone-'.$cs.'-'.$cf.'.dat', 'w'); //открываем новый...
    } //end if
  } //end while
  $cs++;
  fclose($source);
  fclose($outhndl); 
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы