Проблема с быстродействием

dima333

Новичок
Проблема с быстродействием

Люди вот такакая проблема возникла, Производится поиск по около 2000 файлам. На серверо разрешеное время скрипта 30 секунд, естествено в это время поиск не вкладывается.
Вот сам код поиска слова в файлах

$sql = "SELECT * FROM files";
$result = mysql_query($sql,$conn);
while ($row = mysql_fetch_assoc($result))
{
if (stristr(file_get_contents("$row[file]"), "$slovo")) echo "<a href='$row'><font face='Verdana' size='1'>$row[file]</font></a><br>"; } Как можно зделать это быстрей или обойти этот 30 секундный порог???
 

Wicked

Новичок
жесть :)

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

полнотекстовый поиск ты можешь сделать сам в том же mysql:
1) подготовка базы:
1.1) создаешь таблицу с 2 полями - `номер текста`, `слово`.
1.2) создаешь индекс (`слово`, `номер текста`).
2) индексация
2.1) разбиваешь все тексты на слова
2.2) в базу в новую таблицу складываешь кортежи (номер текста, слово).
3) поиск
3.1) делаешь запрос select `номер текста` where `слово` = '$escaped_slovo';

но, если есть возможность, стоит присмотреться к http://sphinxsearch.com/
 

HraKK

Мудак
Команда форума
А можешь создать индекс FULLTEXT но это очень легко, так что лучше позабивать себе голову способом от Wicked
 

Gas

может по одной?
Wicked
та человеку бы разобраться с простым адекватным вариантом, вместо его ужаса, а уже потом усложнять.
 

dima333

Новичок
HraKK
Файлы постояно обновляются, добавляются новые, удаляются.
Мне не надо сохранять всё содержимое в базе. $slovo тоже не постояное. Пользователь вводит слово и он должен показать тот файл где есть это слово.
Как зделать без использования базы?

ini_set( 'max_execute_time', 999); Тоже не проканает. У меня простой хостинг, и доступа к php.ini нет!
 

Gas

может по одной?
Мне не надо сохранять всё содержимое в базе.
тогда оставь свой вариант и не жалуйся.

-~{}~ 26.09.08 14:41:

Файлы постояно обновляются, добавляются новые, удаляются.
но актуальные названия файлов у тебя лежат то в базе! значит есть какой-то код который отслеживает изменения файлов. Зачем тогда приводить это как аргумент против базы, не понятно.
 

HraKK

Мудак
Команда форума
Он просто не умеет работать с базой, под этим предлогом и пишет что ему не надо.
Wicked
А когда не работал хХ?
Выставьте нужные кодировки ;)
 
Сверху