Mario1973
27.12.2007, 22:05:26
Mam drobny skrypcik pobierający pliki graficzne z jakiegoś serwera przez : readfile (http://www.costam.com);
Chciałbym pobierać te pliki przez mój serwer proxy. Często zapytania są o te same pliki i mógłbym je ciągnąć z cache.
Jak (na co) zmienić to readfile, aby pobierac przez proxy ?
M
OK, zkurlałem to sobie :
curl_setopt($ch, CURLOPT_PROXY, 'xx.xx.xx.xx:8080' );
ale niestety mój proxy i tak tego nie cache-uje .....a chciałem keszować miniaturki stron z girafa.com - tak aby zmieścic się w darmowych 2000 wyswietleń dziennie.
M
seaquest
27.12.2007, 22:14:27
Możesz to rozwiązać inaczej. Pytaj po prostu swój serwer o miniaturkę. A na swoim serwerze sprawdzaj czy ją masz zcachowaną. Jeśli nie, ściągasz, tworzysz cache, zwracasz. Jeśli tak, zwracasz cache.
Mario1973
27.12.2007, 22:51:03
Czyli sugerujesz, żebym zrobił sobie cache .... ok, może jakoweś rozwiązania podobne widziałeś ?
Pytam o sugestie odnośnie zapis i póżniej odszukanie tego - jak to zrealizować. (nie jestem biegły w temacie. Jestem na etapie kodu maszynowego z Commodore 64, zatem dość archaiczne rozwiązania mi mogą przychodzić do głowy)
M
seaquest
27.12.2007, 23:27:13
Na serwerze "proxy" stawiasz serwer http i wywołujesz obrazek poprzez np.
http://serwer-proxy/proxy.php?obrazek=adres-strony-wwwPlik proxy.php sprawdza czy taki obrazek ma ściągnięty, jak nie, to ściąga i zwraca. Jeśli tak - to po prostu zwraca.
Mario1973
28.12.2007, 09:44:02
Cytat(seaquest @ 27.12.2007, 23:27:13 )

Na serwerze "proxy" stawiasz serwer http i wywołujesz obrazek poprzez np.
http://serwer-proxy/proxy.php?obrazek=adres-strony-wwwPlik proxy.php sprawdza czy taki obrazek ma ściągnięty, jak nie, to ściąga i zwraca. Jeśli tak - to po prostu zwraca.
Tak, to zupełnie rozumiem. Prędzej wątpliwość wzbudza użyte przez Ciebie "proxy.php" - to tylko przykładowa nazwa, czy konkretny istniejący skrypt.
Po pierwszym poście zrozumiałem, że sam mam sobie wydłubać swoje proxy, a niezbyt kumałem jak to rozwiązać raczej od strony sposobu 'spisu plików' i jego przeszukiwania . W końcu plików nie będzie wiele - ze 2000.
Przeraziła mnie za to ilość pobrań - już teraz jest ponad 4000 dziennie - pewnie wina robotów...... Serwerek i łącze to wyciągnie bez problemu - tylko kwestia, żeby to elegancko i wydajnie napisać...
M
seaquest
28.12.2007, 10:11:16
proxy.php to tylko przykładowa nazwa
Mario1973
28.12.2007, 10:41:44
Jak byś rozwiązał spis zawartości cache i sprawdzanie ?
Podaj tylko sugestie - metodę.
Spis robić w pliku i przeglądać go po prostu ? Czy może bez spisu, a przeglądać zawartość katalogu z plikami ?
M
seaquest
28.12.2007, 10:44:30
Możesz trzymać w bazie danych albo po prostu użyć file_exists, gdzie nazwa pliku to np md5 z adresu strony.
Mario1973
28.12.2007, 11:18:50
Cytat(seaquest @ 28.12.2007, 10:44:30 )

Możesz trzymać w bazie danych albo po prostu użyć file_exists, gdzie nazwa pliku to np md5 z adresu strony.
oooo podoba mi się to file_exists - z tym to wygląda na prostą sprawę. Czy widzisz jakieś zonki, czy jest to naprawdę bardzo proste ?
- odczytać zapytanie
- zrobić MD5 z adresu
- file_exists ? jeśli nie , to pobrać z girafy i zapisać
- wziąć plik z nazwą MD5
i wsio ?
aaa jak wdrożyć czyszczenie keszu co np 12 godzin, żeby uwzględniać zmiany w obrazkach - Jak ustalić upływ czasu ?
M
seaquest
28.12.2007, 11:33:33
md5(nazwa)_timestamp().jpg
timestamp() sprawdzasz przy odczytywaniu i jak jest za stary to kasujesz obrazek.
Mario1973
28.12.2007, 14:47:08
OK, dziękuję za bardzo pomocne odpowiedzi.
Na koniec jeszcze ostatnie pytanie, czy file_exists przy około 2000 plikach nie będzie jakoś szczególnie męczył serwera ? Czasochłonne to ?
M
seaquest
28.12.2007, 21:16:03
Nie, bo wykorzystuje indeks partycji na jakiej znajdują się pliki. Więc jeśli wybierzesz np reiserfs w linuxie to będzie śmigać.
Mario1973
28.12.2007, 23:06:38
Serdecznie dziękuję za pomoc w naprowadzaniu , skrypcik zrobiłem i działa poprawnie.
jeszcze wdrażam kasowanie, gdy plik jest starszy niż 1 dzień :
#jesli plik ma min 1 dzien to kasuj
if((time()-filemtime($filename))>86400)
unlink ($filename);
będzie OK ?
M
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.