[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка нескольких значений на существование в БД
gidrosoldat
Всем привет!
Предлагаю немного размять мозги )) Подкидываю вот такую тему - проверка нескольких значений на существование в БД.
Например, существует RSS лента, которая дает мне важную информацию - дату записи, заголовок и линк.
Я при помощи создания DOMDocument() и load() получаю эти тэги в свой массив.
С другой стороны есть таблица БД rss с полями rid(индекс записи), title(заголовок rss новости), link(ссылка на rss новость) и date(дата и время rss новости).

Так вот, каким будет та часть скрипта, которая сравнит только что полученный массив с новостями с уже имеющимися в БД и запишет только новые новости?

Приветствуются любые идеи и замечания, давайте устроим мозговой штурм ))

П.С. пока писал этот топик родилась идея брать из базы данных дату последней записи и уже по ней сортировать полученный массив из RSS. Те новости что раньше этой даты - пролетают, а те что позже записываем в БД. Только вот как лучше сразу вписывать несколько записей в одну таблицу? Обычным запросом через цикл? Или есть какой то "необычный запрос" для такой ситуации?



Спустя 24 минуты, 55 секунд (6.05.2011 - 13:57) linker написал(а):
Тут даже думать нечего, если скрипт периодически запускается и проверяет новые новости, то он должен помнить дату последнего запуска, а потом выгребать только те новости, у которых дата больше даты последнего запуска.

Спустя 16 минут, 42 секунды (6.05.2011 - 14:14) gidrosoldat написал(а):
linker, а насчет записи какие мысли?

Спустя 7 минут, 3 секунды (6.05.2011 - 14:21) linker написал(а):
В цикле, если будет ошибка в запросе, то вообще ничего не добавится, а так хоть что-то. Делай
INSERT LOW_PRIORITY ...
, слишком большой запрос при добавлении сразу десятка новостей тоже не кошерно.

Спустя 52 минуты, 50 секунд (6.05.2011 - 15:14) gidrosoldat написал(а):
linker, тэкс загуглил.

Цитата
Оператор INSERT допускает несколько дополнительных опций.

С помощью ключевых слов LOW_PRIORITY и DELAYED можно назначить низкий приоритет оператору INSERT или отложить его выполнение. Оба выражения заставят систему отложить вставку данных, пока какой-нибудь клиент не попытается прочитать данные из таблицы. Разница между указанными опциями заключается в том, что LOW PRIORITY блокирует клиент вставки, а DELAYED - нет. Это значит, что при использовании вставки LOW PRIORITY вам, возможно, придется немного подождать перед тем, как вы сможете продолжить выполнение запросов в своем клиенте. При использовании DELAYED вы получите в ответ ОК и сможете продолжать выполнение запросов, но при этом нужно помнить, что вставка все равно не будет выполнена, пока таблица не начнет использоваться.


А простыми словами можно - в каких случаях используется аргумент LOW_PRIORITY ?
Подозреваю что бы не повесить БД, выстраиваем все запросы в очередь? Или нет?

Спустя 40 минут, 50 секунд (6.05.2011 - 15:54) linker написал(а):
Суть в том, что пока не выполнятся все SELECT из очереди, INSERT не пройдёт.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.