Помогите с реализацией на 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)
Новые темыОбъявленияСвободное общение
05:30 Absence в Армении 
05:29 Стоит ли добавлять сайт в Rambler топ 100? 
05:15 Как продвигать сайт с неуникальным контентом 
19:29 Dao.AD: Монетизация и покупка Push/Pops/Inpage и Video трафика! 
14:50 Индексация страниц 
12:36 У кого новостник, дайте пару советов плиз 
13:53 AviTool - мощный инструмент для автоматизации работы с Avito 
05:17 Продам копию сайта. 
04:11 Просто $0.04/IP 9PROXY.COM Резидентные прокси Неограниченная пропускная способность Уникальная политика замены Без чёрного списка 
01:31 Скрипт обменника валют 
21:44 BestX24 - быстрый и безопасный обменник криптовалют и электронных денежных средств 
17:24 A-Parser 1.1 - продвинутый парсер поисковых систем, Suggest, PR, DMOZ, Whois, etc 
14:01 Продам аккаунты Gmail USA IP | Gmail MIX IP | Outlook Old 
13:15 SOCKS5 приватные прокси на 30 дней для PayPal 
05:24 Ну что, кто куда деваете свои сайты? 
22:09 Добро пожаловать в цифровой мир... 
19:42 Топ-5 способов использовать мобильные прокси для бизнеса: подробный обзор 
22:08 Накрутка поисковых подсказок 
05:04 Точные прогнозы на футбол 
14:01 Union Pharm - топовая фарма-партнерка для профессионалов! 
10:59 Ням-ням! - 8 деликатесов, которые когда-то ели только бедные люди