Выборка кеев с большых файлов. Как ускорить? - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB93.4409
BTC/USD64260.8938
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 02.02.2011, 02:52   #1
RedHead
Senior Member
 
Аватар для RedHead
 
Регистрация: 26.08.2008
Адрес: UA
Сообщений: 2,941
Бабло: $402835
Question Выборка кеев с большых файлов. Как ускорить?

юзал примерно вот такой код:
PHP код:
$key 'blabla';
$fout fopen("result.txt","w+");
$fin fopen("keys.txt",'r+');
while(!
feof($fin)){
    
$fline fgets($fin63);
    
$templine "  ".trim($fline)."  ";
    
$tempkey " ".trim($key)." ";
    if (
strpos($templine,$tempkey) <> FALSE) {fputs ($fout,$fline);}
    }
fclose($fin);
fclose($fout); 
если база пару гигов - совсем не радует. Как можно ускорить или есть другие решения (на других языках или софт)?
RedHead вне форума  
Старый 02.02.2011, 02:58   #2
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

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

а в бд грузить смысла нет, системные команды надо юзать полюбому


Цитата:
if (strpos($templine,$tempkey) <> FALSE) {fputs ($fout,$fline);}
по-моему тут серьезный баг, вместо <> надо использовать !==, иначе скрипт будет отсекать все строки, начинающиеся с кея
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser

Последний раз редактировалось chesser; 02.02.2011 в 03:08.
chesser вне форума  
Старый 02.02.2011, 03:06   #3
imgreen
Senior Member
 
Аватар для imgreen
 
Регистрация: 15.11.2008
Сообщений: 13,230
Бабло: $247845891
По умолчанию

Цитата:
ну так то баш побыстрее будет, седом например
на много?
imgreen вне форума  
Старый 02.02.2011, 03:09   #4
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

Цитата:
Сообщение от imgreen Посмотреть сообщение
на много?
намного

хотя если прям скорость нужна и РАМы много, можно в память все загрузить в php
а если рамы столько нет, то в баше быстрее будет
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 02.02.2011, 03:10   #5
imgreen
Senior Member
 
Аватар для imgreen
 
Регистрация: 15.11.2008
Сообщений: 13,230
Бабло: $247845891
По умолчанию

Цитата:
Сообщение от chesser Посмотреть сообщение
намного
а поточнее?
imgreen вне форума  
Старый 02.02.2011, 03:21   #6
Юнга
white powder
 
Аватар для Юнга
 
Регистрация: 29.04.2007
Сообщений: 2,692
Бабло: $370670
По умолчанию

поиск по ключу - это индекс, индекс - это база.
либо свой индекс строить.
__________________
господин мойва любит вас 🙄https://t.me/musica_finale | у каждого есть история: https://anchor.fm/hibrokakbiz 🙉🎤🙊
Юнга вне форума  
Старый 02.02.2011, 03:32   #7
RedHead
Senior Member
 
Аватар для RedHead
 
Регистрация: 26.08.2008
Адрес: UA
Сообщений: 2,941
Бабло: $402835
ТС -->
автор темы ТС По умолчанию

нету линукса под рукой, поставил виндузятный grep
примерно в 50 раз быстрее.
спасибо. но думаю и это не предел
RedHead вне форума  
Старый 02.02.2011, 03:32   #8
imgreen
Senior Member
 
Аватар для imgreen
 
Регистрация: 15.11.2008
Сообщений: 13,230
Бабло: $247845891
По умолчанию

Цитата:
Сообщение от Юнга Посмотреть сообщение
поиск по ключу - это индекс, индекс - это база.
либо свой индекс строить.
там наверное не точное вхождение ключа
но если точное, то +1 за базу =)
imgreen вне форума  
Старый 02.02.2011, 03:37   #9
Юнга
white powder
 
Аватар для Юнга
 
Регистрация: 29.04.2007
Сообщений: 2,692
Бабло: $370670
По умолчанию

Цитата:
Сообщение от imgreen Посмотреть сообщение
там наверное не точное вхождение ключа
но если точное, то +1 за базу =)
судя по коду там лайк запрос типа LIKE '% keyword %'.
тут еще вопрос соотношения ресурсов - быстрый винт и/или много памяти.

RedHead, сколько кеев в базе и сколько ищет в среднем на текущем железе?
__________________
господин мойва любит вас 🙄https://t.me/musica_finale | у каждого есть история: https://anchor.fm/hibrokakbiz 🙉🎤🙊
Юнга вне форума  
Старый 02.02.2011, 03:38   #10
simba
Member
 
Регистрация: 11.09.2010
Сообщений: 56
Бабло: $7755
По умолчанию

$tempkey = " ".trim($key)." ";
зачем же каждый раз операцию выполнять. можно в самом начале один раз)
__________________
Блог Симбы
simba вне форума