Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Serwis oparty o RSSy
Forum PHP.pl > Forum > PHP
Bajki
Witam
Nie wiem czy założyłem ten temat w dobrym dziale ale nie byłem pewien, czy w dziale hydepark kto kolwiek był by zainteresowany dyskusją na tak nudny temat winksmiley.jpg Otóż planuje napisanie serwisu na którym to użytkownik zakładał by konto, dodawał link do RSSa swojego bloga lub strony. Skrypt automatycznie (przypuszczam, że z pomocą crona) przeszukiwał by podane przez użytkowników url-e RSSów pod kątem nowych wpisów i w razie napotkania tak owego - dodawał stosowne informacje do bazy danych.

Na stronie głównej wyświetlane by były jedynie miniatury pierwszego napotkanego we wpisie zdjęcia + kilka pierwszych słów wpisu.

Wiem jak to napisać i ogólnie nie kuleje jeśli chodzi o umiejętności, nie wiem jednak jak to rozwiązać żeby działało w miarę szybko i efektywnie. Stąd też pierwsza seria pytań (być możę będą kolejne) :

1. W jaki sposób zapisywać ściągnięte z rssa informację ?
Ogólnie przychodzą mi do głowy trzy sposoby :
a ) za każdym razem kiedy użytkownik wchodzi na stronę rssy ściągane są z podanych urli ale to chyba najbardziej nieefektywne rozwiązanie jakie można sobie wyobrazić biggrin.gif odpada
b ) (cron) Skrypt ściąga całą zawartość wpisu, szuka pierwszego obrazka, wybiera pierwsze słowa wpisu i jedynie te informacje zapisuje w bazie i na serwerze(+ oczywiście użytkownika, link itp)
c ) (cron) skrypt ściąga całą zawartość wpisu i dodaje ją w całości do bazy danych a kiedy użytkownik odwiedza stronę, treść generowana jest na podstawie zawartości bazy danych

jeśli będzie jakiekolwiek zainteresowanie tym tematem to zadam kolejne pytania winksmiley.jpg

Pozdrawiam i z góry dziękuje za pomoc !
Bajki
erix
IMHO B byłoby najlepsze - najlepiej, jeśli chodzi wygoda + wydajność.
vokiel
Rozwiązania wg mnie (zależy jak często linki do kanałów będą się powtarzać u różnych użytkowników).
1. Często - dużo uzytkowników ma subskrybowane te same kanały - ściąganie cronem
2. Mało - każdy user ma swoje, rzadko występujące u innych kanały - ściąganie ajaxem po wejściu na stronę

Problemem przy 2, może być to, że użytkownik zobaczy tylko aktualne (ostatnie wiadomości).
Natomiast w przypadku 1, nawet jak przez kilka dni nie zajrzy na konto, rss zostanie pobrany, i użytkownik będzie miał tak jakby historię wiadomości.

A i jeszcze jedna rzecz. Czy wiadomości mają być zapamiętywane? Czy tak jak w iGoogle - nie. Bo jeśli chcesz, aby użytkownik mógł sobie przejrzeć starsze wpisy z danego kanału, to i tak trzeba będzie je trzymać w bazie. Zatem wtedy pozostaje wybór 1.

Twój przykład c - wydaje się być trochę nieefektywny. Ciekawe jak często użytkownik czyta całą wiadomość, a jak często jest tak, że tylko nagłówki, a całość zaledwie co dziesiątej. Jak patrze po sobie, to duży odsetek nagłówków zostaje nieotwarty, zatem nie ma sensu pobierać całości wiadomości jeśli nie zostanie przeczytana.

Tak czy inaczej, wg mnie pomysł z cronem i cachowaniem w bazie jest najlepszy
Bajki
Dzięki za zainteresowanie winksmiley.jpg
Więc tak - zapomniałem chyba wspomnieć o paru ważnych kwestiach winksmiley.jpg Przedewszystkim ten serwis nie ma służyć do subskrypcji kanałów RSS online (tak jak iGoogle) tylko raczej do stworzenia .... treści tego serwisu mają być oparte o kanały RSS jego użytkowników, którzy dodają w panelu użytkownika adresy url swoich stron lub blogów. To raczej coś jak forma reklamy swojego bloga/strony przy jednoczesnym współtworzeniu tegoż serwisu + możliwość wyszukiwania wpisów i sortowania ich na różnorakie sposoby.

Adresy RSSów nie będą się powtażać ponieważ będzie to zablokowane z poziomu skryptu.

Tak chciał bym aby użytkownicy mogli przeglądać starsze wpisy jednak nie planuje możliwości przeglądania pełnej treści wpisu z poziomu strony - miniatura oraz pierwsze slowa wpisu bedą jedynie linkiem bezpośrednio do wpisu a nie do pełnej treści. Ogólnie najlepsza wydaje mi się do tego co napisałem wyżej opcja b jednak w takim razie pojawiają sę następne pytania :

2. Jak porównać wpisy dodane do bazy z wpisami ściągniętymi z RSSa ?
Chodzi o to, że pojawia się problem kiedy twórca bloga/strony wyedytuje na swoim blogu posta, który został już dodany do bazy danych mojego serwisu - jak sprawdzić czy do tego doszło i co dalej robić. Jeśli będzie to działało na zasadzie : ściąganie RSSów, porównywanie ich tytułów i ew. daty z wpisami istniejącymi już w bazie a następnie dodawanie jedynie tych, które sie w niej jeszcze nie znajdują jednak jeśli tytuł lub data jednego z takich wpisów zostanie zmieniony przez twórce bloga, informacje w mojej bazie danych zostaną zdublowane
erix
Cytat
Chodzi o to, że pojawia się problem kiedy twórca bloga/strony wyedytuje na swoim blogu posta, który został już dodany do bazy danych mojego serwisu - jak sprawdzić czy do tego doszło i co dalej robić.

Zajrzyj do specyfikacji formatu - kanały mają taki znacznik, który - w skrócie - jest unikalnym identyfikatorem wpisu.
Bajki
O kurcze, w zasadzie to to rozwiązuje wszystkie problemy, które przychodzą mi do głowy i których temat miałem poruszyć biggrin.gif rewelacja exclamation.gif Naprawde wielkie dzięki za pomoc exclamation.gif smile.gif Dla osób zainteresowanych tematem - chodzi o znacznik <guid> (o ile się nie myle)
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.