Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]RSS+baza danych
Forum PHP.pl > Forum > PHP
Falcon2
Witam

Mam pytanie - napisałem klasę, która pobiera dane z jakiegoś kanału RSS i zapisuje do bazy.

Problem pojawił się w przypadku warunku niezbędnego podczas dodawania pojedynczego rekordu, a mianowicie sprawdzanie, czy dany rekord już istnieje.

W pętli pobierającej wyniki RSS przed dodaniem rekordu do bazy dałem warunek, aby sprawdzono, czy pobrany tytuł newsa znajduje się już w bazie - jeśli tak to, aby nie dodawano go po raz drugi. Metoda jest moim zdaniem nie wydajna bo przy dużej ilości takich newsów daje to np. 20 krotne użycie przeszukiwania bazy w jednej sekundzie.
Czy istnieją jakieś inne, wydajniejsze metody?
bim2
Sprawdź datę ostatniej wiadomości w bazie danych i dodawej tylko te później smile.gif
erix
Cytat
Czy istnieją jakieś inne, wydajniejsze metody?

Zrób CRC na permalinka do wpisów, załóż na niego indeks, będzie IMHO najszybciej. winksmiley.jpg Potem sprawdzasz w jednym zapytaniu przez zwykłe WHERE. winksmiley.jpg
Falcon2
zrobiłem tak, jak radził bim2.

Zastanawia mnie jeszcze jedna rzecz - mianowicie jeśli data rekordu RSS jest większa od obecnej daty to co należałoby zrobić? Jeśli zamienię tę datę na np. obecną lub nawet obecną pomniejszoną o godzinę to w przypadku metody napisanej przez bim2 może wystąpić problem :/ mianowicie rekordy będą dublowane aż do momentu, kiedy data rekordu będzie mniejsza od obecnej
zzeus
Pamiętaj że data nie jest obowiązkowa i może jej nie być.
erix
Dlatego oprócz daty wpisu dodawaj też URL i sprawdzaj, czy jest już wcześniej taki w bazie. Wtedy unikniesz zdublowanych wpisów bo zamiast INSERT wykonasz UPDATE (jeśli użyjesz UNIQUE, to wtedy elegancko pójdzie ON DUPLICATE).

Cytat
to w przypadku metody napisanej przez bim2 może wystąpić problem

Jeśli sprawdzasz obecną datę systemową zamiast daty wpisu, to tak. winksmiley.jpg

Ale spróbuj jeszcze ze sprawdzaniem URL; nie bez powodu podałem Ci, abyś użył CRC. winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.