Помогите с реализацией на 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)
Новые темыОбъявленияСвободное общение
02:52 РСЯ и тормоза сайта: Яндекс начал штрафовать за плохой PageSpeed? 
23:09 Как безопасно купить Гугл почту? 
22:34 01.02. Апдейт 31.01 // Chrome готовит "чёрную метку" для ИИ? 
13:45 Какой движок выбрать для форума? 
13:43 Нашел скрины выплат с Сапы за 2010 год. Пошел плакать 
09:26 Трафик пробил дно? Худший январь за 10 лет и внезапный рост продаж с Bing 
19:27 Плагин ответа 
23:25 SOCKS5 приватные прокси на 30 дней для PayPal 
23:24 Google Voice аккаунты для бесплатных SMS и звонков 
23:23 PayPal аккаунты для любых целей 
23:02 BestX24 - быстрый и безопасный обменник криптовалют и электронных денежных средств 
20:21 CryptoGraph — Анонимный обмен криптовалют без KYC и AML 
12:09 Trustpilot Reviews | Подниму рейтинг вашей компании 
12:07 Купить отзывы на Яндекс и Гугл картах, на Авито, на Отзовике и IRecommend 
23:51 Ставки на супер тренды в спорте 
22:31 [AI] Бот за $600к советовал есть сыр с крысами. Нью-Йорк его (наконец-то) снес 
22:30 Точные прогнозы на футбол 
13:38 Осталось 3-5 месяцев до блокировки YouTube в России, — заявил Клименко 
07:11 Список обновленных тем пуст... 
17:02 Gartner обещал смерть SEO к 2026 году. Открываем метрику и проверяем 
08:25 Отвратительное поведение