Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Удаление строк

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Удаление строк
rafonets
Отправлено: 26 Мая, 2011 - 11:17:35
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Удаление строк

В файле file.txt есть строки такого вида:
dfadfgadg
fsgsgf
dfgdsfg
sdfgsdfg
sdfgfdg

И так от 1гб до 5 гб около 500 000 и выше строк
мне не нужно каждый раз вытаскивать все 500 000 строк потому что к скрипту будет подключаться каждые 0.1-0.2 секунды раз
что теперь нужно?
а нужно с начало в Переменую $peremenaia засунуть первые две строки тоесть вот так
$peremenaia = "dfadfgadg-fsgsgf";
а в файле удалить те строки которые вызвали в переменую и уже используются
то есть это будут:
dfadfgadg
fsgsgf

как это сделать?

Есть несколько примеров они только удаляют строки но вызывают весь файл в массив
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.   $fw=fopen('out.txt','w');
  4.   $fr=fopen('test.txt','r');
  5.   $fs=filesize('test.txt');
  6.   while (!feof($fr))  
  7.    {
  8.     $str = fgets($fr, 4096);
  9.     $curpos=ftell($fr);
  10.     if ($curpos==$fs) break;
  11.     if (check_string($str,$fr)) {fseek($fr,$curpos);continue;}
  12.       else {fseek($fr,$curpos);fwrite($fw,$str);}    
  13.    }
  14.    fclose($fr);
  15.    fclose($fw);
  16. function check_string($str,$fp)
  17. {
  18.   while (!feof($fp))  
  19.    {
  20.     $strf = fgets($fp, 4096);
  21.     if ($strf==$str) return true;    
  22.    }
  23.   return false;
  24. }
  25. ?>
  26.  
  27.  
  28.  
  29. <?
  30. if ($id != "")
  31. {
  32. $id--;
  33. $file=file("file.txt");
  34. $fp=fopen("file.txt","w");
  35. for($i=0;$i<sizeof($file);$i++)
  36. {
  37. if($i==$id)
  38. {
  39. unset($file[$i]);
  40. }
  41. }
  42. fputs($fp,implode("",$file));
  43. fclose($fp);
  44. }
  45. ?>
  46.  


это только удаление но оно нагружает даже мой домашний комп и в перезагрузку даже не бросает так заедает приходиться с провода вытаскивать кто поможет?

(Отредактировано автором: 26 Мая, 2011 - 11:48:59)

 
 Top
Uchkuma
Отправлено: 26 Мая, 2011 - 11:31:23
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




rafonets пишет:
Удаление строк, из файла там идет в таком виде
dfadfgadg
fsgsgf
dfgdsfg
sdfgsdfg
sdfgfdg

И так от 1гб до 5 гб
что теперь нужно?
а нужно сначало надо засунуть в какую-то $ вот это dfadfgadg-fsgsgf
а в файле удалить вот это dfadfgadg fsgsgf

Приведите свой поток мыслей в удобочитаемую и воспринимаемую форму.
 
 Top
rafonets
Отправлено: 26 Мая, 2011 - 11:49:54
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Uchkuma пишет:
Приведите свой поток мыслей в удобочитаемую и воспринимаемую форму.

Так лучше?
 
 Top
Мелкий Супермодератор
Отправлено: 26 Мая, 2011 - 12:04:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Используйте SQLite.


-----
PostgreSQL DBA
 
 Top
rafonets
Отправлено: 26 Мая, 2011 - 12:36:34
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Мелкий пишет:
Используйте SQLite.

К моему сожалению скрипт не мой ( и придется использовать файлы
 
 Top
lancer51
Отправлено: 26 Мая, 2011 - 18:12:48
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




file_get_contents позволяет ставить лимит чтения байт.
 
 Top
rafonets
Отправлено: 26 Мая, 2011 - 18:45:12
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2.                 $f=file("file.txt");
  3.                         $kluch = $f[0].$f[1];
  4.                         $kluch = str_replace(" ","-",$kluch);
  5.                         $kluch = str_replace("0","",$kluch);
  6.                                 for($i=0;$i<2;$i++){
  7.                                         unset($f[$i]);
  8.                                         $fp=fopen("file.txt","w");
  9.                                         fputs($fp,implode("",$f));
  10.                                         fclose($fp);
  11.                                 }
  12.  

Благодарю всех сам разобрался
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с файловой системой и файлами »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB