Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]RSS+baza danych
Falcon2
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 6.02.2009

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
bim2
post
Post #2





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Sprawdź datę ostatniej wiadomości w bazie danych i dodawej tylko te później smile.gif


--------------------
Go to the top of the page
+Quote Post
erix
post
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Falcon2
post
Post #4





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 6.02.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
zzeus
post
Post #5





Grupa: Zarejestrowani
Postów: 441
Pomógł: 71
Dołączył: 3.09.2007
Skąd: wrocław

Ostrzeżenie: (0%)
-----


Pamiętaj że data nie jest obowiązkowa i może jej nie być.


--------------------
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 18:46