Помогите с реализацией на php
Страницы: 1
Помогите с реализацией на php
Возникла задача, предположим у нас файл, в котором 100 строк чего либо т.е $x=100; и мне нужно его разбить на 5 частей т.е $y=5; шаг цикла получается 25 $shag=25; затрудняюсь в реализации. нужно чтоб файл разбился на 5 частей и каждая часть записалась в отдельный файл.
Если интересно могу дать контакты своего программиста в лс, за пиво думаю поможет
Вот как нужно делать сайты Bezlimi.com
Код
$x = file('file.txt');
$i =0;
while ($i<20) {
$file = fopen("file1.dat","a++");
   flock($file,LOCK_EX);
      fputs($file, $x[$i]);
      fflush($file);
   flock($file,LOCK_UN);
   $i++;
fclose($file);
}
$i =20;
while ($i<40) {
$file = fopen("file2.dat","a+");
   flock($file,LOCK_EX);
      fputs($file, $x[$i]);
      fflush($file);
   flock($file,LOCK_UN);
   $i++;
fclose($file);
}
$i =40;
while ($i<60) {
$file = fopen("file3.dat","a+");
   flock($file,LOCK_EX);
      fputs($file, $x[$i]);
      fflush($file);
   flock($file,LOCK_UN);
   $i++;
fclose($file);
}
$i =60;
while ($i<80) {
$file = fopen("file4.dat","a+");
   flock($file,LOCK_EX);
      fputs($file, $x[$i]);
      fflush($file);
   flock($file,LOCK_UN);
   $i++;
fclose($file);
}
$i =80;
while ($i<100) {
$file = fopen("file5.dat","a+");
   flock($file,LOCK_EX);
      fputs($file, $x[$i]);
      fflush($file);
   flock($file,LOCK_UN);
   $i++;
fclose($file);
}
Изменено: Coder - 8 Августа 2014 09:16
Coder, большое спасибо, хороший пример, теперь есть от чего оттолкнутся, значение $i до скрипта рендомное, в соответствие и имена файлов будут пошаговыми...
Изменено: flynstr - 8 Августа 2014 10:31
Цитата
flynstr пишет:
Coder , большое спасибо
Пожалуйста)
Вообщем свою задачу решил так!

Код
 $tmp_dir="tmp/";
function gen($FILEb,$ia,$Shc,$i){
   while ($ia<$Shc) {
      $mail_str.=$FILEb[$ia]; //записываем в переменную номер строчки
      $ia++; //следущая строчка в цикле
}
echo $i."<hr>".$mail_str."<hr>";
$fp = fopen($tmp_dir."mail_".$i.".txt", "a+");
 fwrite($fp, $mail_str."\n");
 fclose($fp);
}

function rebild_e($Shc,$page,$FILE) {
$FILEb=file($FILE);
$ia=0; 
$b=$Shc;
for($i=0; $i<$page; $i++) {

//цикл генерации файла на шаг
gen($FILEb,$ia,$b,$i);

$b=$Shc*($i+1);
   if($b<=$ia){
   $ia=$ia-$b;
      }
      elseif($ia=$b){
      $b=$b+$Shc;
      }
      else {$ia=$ia+$Shc;}

}
}
rebild_e('500','6','mmm.txt');


Может кому пригодиться в подобное решение!
Изменено: flynstr - 8 Августа 2014 14:49
А можно еще так сделать:

Код
$x = file('file.txt'); 
foreach($x as $key => $str){ 
if($key>=0 AND $key<20){$fo = fopen('1.txt', 'a');fwrite($fo, $str);} 
if($key>=20 AND $key<40){$fo = fopen('2.txt', 'a');fwrite($fo, $str);} 
if($key>=40 AND $key<60){$fo = fopen('3.txt', 'a');fwrite($fo, $str);} 
if($key>=60 AND $key<80){$fo = fopen('4.txt', 'a');fwrite($fo, $str);} 
if($key>=80 AND $key<100){$fo = fopen('5.txt', 'a');fwrite($fo, $str);} 
}


Компактно и красиво )))
100 операций чтения и записи - красиво? ну-ну...
Изменено: Александр - 1 Января 2015 15:12
Цитата
Александр пишет:
100 операций чтения и записи - красиво? ну-ну...

Ну и зачем такой пост. Напиши как должно быть тогда, я всегда готов учиться.
К первой строчке претензий вообще нет:
Код
$x = file('file.txt');
тут без вопросов - все отлично, если файл не будет иметь размер в пару гигов конечно... 
Но все, что внутри цикла - ужас.

Начать с того, что по условию разбивать на до по 25 строк, а не по 20. Оп, уже садиться этот кусок переписывать? А если завтра по 5 надо будет или по 1? 100 раз скопипастите? а если строк не 100, а 10000?

Сейчас в КАЖДОЙ итерации открывается файл на запись...smile:eek: Почему бы не подготовить несколько строк сперва и не скинуть их в файл только 1 раз, а не 20 раз как сейчас - все продуктивнее будет и быстрее по времени.
Изменено: Александр - 3 Января 2015 10:50
Гыгы)) Раньше тоже думал, блин, надо все делать безупречно, все вылизывать и стремиться к идеалу! Но как правило лучше сделать чтобы просто работало! И не тратить время. Лучше сделать 100 вещей от п;;;ы, чем одну идеально)))
Страницы: 1
Похожие темы:
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)
Новые темыОбъявленияСвободное общение
22:45 Всем привет! 
19:37 Xrumer-полезный софт или нет? 
17:26 AI под надзором. Минцифры готовят клеймо для контента 
17:23 APK на паузе. Google убивает быстрый конверт 
17:18 Яндекс-ап 20 марта и похороны ChatGPT, Claude и Gemini. Считаем убытки 
15:02 Слипание слов в блоке 
10:39 MAX попер в бурж: 40 стран, ведение каналов и горы дешевого трафика 
17:24 Обменный Сервис - Купец (Kupec.cc) 
15:52 Продам аккаунты Gmail USA IP | Gmail MIX IP | Outlook Old 
14:06 Продвижение YouTube видео в топ поиска | Любой тип контента | Гарантия результата 
14:06 №1 Рассылка / Инвайтинг [TELEGRAM] | Приватный метод 
14:06 Trustpilot Reviews | Подниму рейтинг вашей компании 
14:06 Установка|Настройка|Доработка|Наполнение сайтов|Дизайн|3D|Видеомонтаж 
13:24 Мобильные и Резидентные Прокси Для Соц Сетей | 3 Гб Бесплатно 
01:42 Точные прогнозы на футбол 
00:53 Сайты Рунета 
21:59 8 марта: желаю аптайма 99.9% и e-e-a-t без локов 
21:22 молодильные яблоки и живая вода 
08:52 Чак Норрис ушел - 19 марта 2026, 86 лет, семья подтвердила 
20:23 Панель Кнопки соцсетей 
14:03 Огородники