Вывод инфы with Ajax

Mashino

Новичок
Вывод инфы with Ajax

Ребят, помогите, кто может, пожалуйста!
Проблема такая, из-за проблем обработки файла (большое количество информации, каждая строка обрабатывается и идет проверка в бд на совпадение) с помощью только лишь пхп - время выполнения скрипта очень большое, что в итоге грузит серв, я подумал о внедрении аякса. То бишь пустить цикл на стороне клиента и в нем вызывается функция, которая обрабатывает определенную строку. В итоге нагрузка уменьшится в разы. Но у меня возникла проблема. Не могу толком осуществить это дело

не работает норм js скрипт:

function upl_price(n)
{
var i=n;
var coun=<?=$count ?>; // количество строк в файле
var f_name="<?=urlencode($file_name) ?>"; // имя файла

if (coun!=null)
{
while (i!=-1)
{
alert(i);
doLoad('<?=$sitename ?>/script.php?file='+f_name+'&stroka='+i);
setTimeout("",1000);
i--;
}
}

}

функция doLoad как раз выполняет запрос к пхп скрипту, который и выполняет проверку по бд и занесение данных.
По идее она должна вызываться при каждом прохождении цикла, но она у меня вызывается только один раз.
В чем проблема, не пойму(
 

fast2111

Новичок
Эээ........

>В итоге нагрузка уменьшится в разы
Как проверял?

>setTimeout("",1000);
Что этим сделать то хотел?

Возможно ли пользователю отдавать не всю информацию, а только необходимую часть? Все не обрабатывать...

Что бы помогли - опиши алгоритм действий по пунктам. Того и гляди и без этого самого Ajax обойдется :)
 

Mashino

Новичок
Есть файл, в котором более 10000 строк например.
Каждая строка проверяется на совпадение в табле бд. Причем строка разбивается на слова и для каждого слова прописывается условие выборки (пример Select ... Where ((name Like '% слово_из_строки')OR(name Like 'слово_из_строки %')OR(name Like '% слово_из_строки %'))AND((name Like '% 2e_слово_из_строки')OR(name Like '2e_слово_из_строки %')OR(name Like '% 2e_слово_из_строки %'))... для всех слов в строке.
Вот.Условие большое, но в итоге получаем точное совпадение всех слов, независимо от их очередности.
Вот, потом информация записывается в другую таблу.

-~{}~ 24.04.08 01:18:

и так для каждой строки
 

fast2111

Новичок
Чего-то ни кто не помогает...

Обрабатывать файл заданное время и можно использовать usleep на итерациях, запоминать позицию последенй обработанной стороки, начать заново с необработаных строк и т.д.

Я бы перегонал разобранный файл в БД и дал бы все в руки СУБД (по возможности конечно, если не просто предолжения в файле).
лишний раз не обращаясь к БД.

>(name Like '% слово_из_строки')OR(name Like 'слово_из_строки %')OR(name Like '% слово_из_строки %')
OR(name Like '% слово_из_строки %') - перекрывает два первых операнда

Хочешь Ajax - Пользователь жмет кнопку - пошел запрос на получениея следующих 10 строк и т.д... пагинатор :)

Разбей задачу на этапы если это возможно.

Или все надо на лету?
 

Mashino

Новичок
>(name Like '% слово_из_строки')OR(name Like 'слово_из_строки %')OR(name Like '% слово_из_строки %')
OR(name Like '% слово_из_строки %') - перекрывает два первых операнда
Ничего не перекрывает. Например нужно найти слово "город" в предложении Москва - большой город. в данном случае найдет, чисто слово город (точно).

-~{}~ 24.04.08 22:54:

Проблему с аяксом решил, переписал js и все заработало. Ща дело в другом, вообще парадокс. У меня Инсерт из скрипта не пашет, то бишь не заносит в базу данных. хотя статус показывает, что инсерт успешно проведен. Пробовал данный запрос непосредственно в пхпмайадмине, все работает. Парадокс, блин, пипец...
 

dimagolov

Новичок
Mashino, раскажи словами, как по-твоему понимает SQL такое условие:
PHP:
 ((name Like '% слово_из_строки')OR(name Like 'слово_из_строки %')OR(name Like '% слово_из_строки %'))
ага... ты еще пробелы ставишь.... но все равно, раскажи как это по-твоему понимает SQL.
 

Mashino

Новичок
либо слово в конце (точное совпадение), либо в начале, либо в середине строки.

-~{}~ 25.04.08 00:08:

то есть например при поиске слова "мам" в строке - Мама мыла раму - выдаст ноль.

-~{}~ 25.04.08 00:28:

Все, теперь полностью все работает. Инсерт никуда не пропадал оказывается, я проверил это в самой бд. Просто я скриптом стирал все данные, не замечая того, бывает же))
Можно закрыть тему
 

dimagolov

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

тебе по-моему надо всего лишь словарь сделать и хранить фразы как нумерованный набор ссылок на словарные записи. тогда и LIKE не нужен будет, и можно по ним индекс построить...
 
Сверху