2015-07-22 10 views
7

Witam wszystkich pozdrowienia, tworzę stronę internetową podobną do Trivago i Hotelscombined. Jestem w stanie uzyskać dane z wszystkich apisów takich jak: expedia, skoosh, lateroom, getaroom, venere, hotel pronto. Utknąłem w punkcie, w którym muszę utrzymać wydajność strony internetowej. Chcę wiedzieć, jak przyspieszyć działanie witryny, tak jak http://www.trivago.com, http://hotelscombined.com.PHP: W jaki sposób Trivago, Hotelscombined pobiera dane szybciej

Praca z paginacją i porównywanie cen ze wszystkimi apisami razem. Jeśli mam uruchomione zadanie cron i zapisuję dane w bazie danych, łatwiej byłoby mi pokazać ceny wszystkich apisów i porównać je i będzie szybciej. Ale jest to dla mnie zły pomysł, aby uruchomić zadanie cron, szczególnie gdy mówimy o hotelach API, ponieważ treść zmienia się za każdym razem w hotelach. Problem z cronem polega na tym, że istnieje tysiące miast, ile danych należy pobrać w bazie danych i ile razy, ponieważ hotele są zarezerwowane w ciągu następnej 1 godziny ok.. Jeśli uruchomimy zadanie cron i założymy, że hotel został zarezerwowany, który został pobrany i zapisany w bazie danych, w takim przypadku jak mam nim zarządzać. Jeśli cron jest odpowiedzią na pytanie, to w jaki sposób powinniśmy pobrać od 10 do 20 danych apis zawierających opisy hoteli, obrazy itp. W bazie danych i zarządzać nimi, ponieważ istnieje ponad milion hoteli na świecie lub może ich być więcej niż 10 milionów. Istnieją również Przypadki, takie jak:

i) Szukaj hotelu w Nowym Jorku dla 2 osób dorosłych, 1 dzieci od 1 sierpnia sprawdzić w czasie do 8 sierpnia sprawdzić czas.

ii) Wyszukaj hotel w Londynie dla 1 osoby dorosłej, 2 dzieci od 2 sierpnia Sprawdź czas do 5 sierpnia czas wymeldowania. W wyszukiwaniu może być wiele przypadków. Ile razy i na ile przypadków powinniśmy uruchomić crona?

W specyfikacji Expedia (http://developer.ean.com/spec/) stwierdza się, że jest tam ograniczenia liczby wniosków: - Hotel kupna Lista: 5000: 1 - Dostępność Pokój kupna: 500: 1

Będzie być bardzo pomocne dla mnie, jeśli jestem w stanie wiedzieć, jak przyspieszyć stronę.

Dzięki z góry

Odpowiedz

4

myślę, że odpowiedział na własne pytanie. Zadania Cron i buforowanie do lokalnej bazy danych brzmi dla mnie jak dobry pomysł. Wystarczy ustawić crona na podobny przedział czasu, aby zawartość zmieniła się w różnych witrynach hotelowych. Jeśli wydajność jest kluczowa, być może baza danych z pamięcią podręczną znajduje się na jej własnym serwerze.

+0

Mój zły, to miał być komentarz. – Liren

+0

Dzięki za odpowiedź, bez problemów, chcę poważnie odpowiedzieć. Utknąłem tu przez ostatnie 2 tygodnie! –

+0

Problem z cronem polega na tym, że są tysiące miast, ile danych powinno być pobranych w bazie danych i ile razy, ponieważ hotele są zarezerwowane w ciągu następnej 1 godziny ok. Jeśli uruchomimy zadanie cron i założymy, że hotel został zarezerwowany, który został pobrany i zapisany w bazie danych, w takim przypadku jak mam nim zarządzać. –

1

Amuk, spróbuj użyć curl_multi. Jest to świetny sposób na przetwarzanie wielu żądań HTTP równolegle w PHP. curl_multi jest szczególnie przydatny podczas pracy z dużymi zestawami danych (np. pobieranie tysięcy kanałów RSS w tym samym czasie) http://www.onlineaspect.com/2009/01/26/how-to-use-curl_multi-without-blocking/

+0

artykuł może być nieco stary, ale biblioteka jest używana przez trivago, a reszta https://github.com/joshfraser/rolling-curl – LikeMike

Powiązane problemy