jak pobrac zdalny plik na lokalny server raz dziennie, PHP Skrypty


[PHP] Jak pobrać zdalny plik na lokalny serwer raz dziennie?

0x01 graphic

Chcesz raz dziennie pobrać plik zdalny (umieszczony na innym serwerze) na swój serwer lokalny.

0x01 graphic

Pobieranie plików może być przydatne, szczególnie gdy zachodzi potrzeba częstego odwoływania się do zdalnych zasobów. O wiele łatwiej jest pobrać go raz dziennie (i/lub wstępnie przetworzyć), a następnie czytać dane z własnego serwera.

Możesz w ten sposób pobierać strony WWW, pliki, również zasoby dostępne na hasło w postaci: http://login:password@www.adres.pl/sciezka/plik.txt.

Poniższy skrypt działa w dwóch wersjach. Prostej, gdzie sprawdzany jest tylko czas, aby pliki były pobrane raz dziennie. Bardziej rozbudowanej, gdzie oprócz czasu porównywana jest wielko¶ć pliku zdalnego i lokalnego, aby mieć pewno¶ć, że kopia zdalna jest tej samej wielko¶ci co lokalna i podczas ¶ci±gania nie została zerwana transmisja.

Zacznijmy od wersji prostej:

$zdalny = "http://www.adres.pl/sciezka/plik.txt";

$lokalny = "plik.txt";

$lokalny_data = (file_exists($lokalny))?date("Y.m.d",filemtime($lokalny)):0;

if ($lokalny_data<>date("Y.m.d")) {

copy($zdalny, $lokalny);

}

Kopiujemy zdalny plik http://www.adres.pl/sciezka/plik.txt do lokalnego plik.txt. Nazwa i położenie lokalnego pliku mog± być dowolne, tylko katalog musi mieć prawa do zapisywania dla każdego (ponieważ odbywa się to przez proces httpd, czyli zwykle użytkownika httpd lub nobody).

Kopiowanie odbywa się za pomoc± funkcji copy(), ale tylko wtedy gdy data pliku jest różna od daty dzisiejszej. Jeżeli rok, miesi±c i dzień s± takie same, to znaczy, że plik lokalny został już pobrany (wtedy jego data aktualizacji zmienia się na dzisiejsz±).

W ten sposób plik jest pobierany tylko raz w ci±gu dnia. Ale podczas transmisji mog± pojawić się nieoczekiwane problemy i wtedy plik nie pobierze się w cało¶ci. Aby zapobiec niezgodno¶ci plików, możesz dodatkowo sprawdzać wielko¶ć pliku zdalnego i lokalnego:

$data=date("Y.m.d");

$zdalny = "http://www.adres.pl/sciezka/plik.txt";

$zdalny_wielkosc = strlen(file_get_contents($zdalny));

$lokalny = "plik.txt";

$lokalny_wielkosc = (file_exists($lokalny))?filesize($lokalny):-1;

$lokalny_data = ($lokalny_wielkosc>-1)?date("Y.m.d",filemtime($lokalny)):0;

if ($lokalny_data<>$data or $zdalny_wielkosc<>$lokalny_wielkosc) {

copy($zdalny, $lokalny);

}

Jest to nieco bardziej kłopotliwy sposób, bo za każdym razem skrypt musi pobrać wielko¶ć pliku zdalnego co chwilkę trwa, ale dzięki temu mechanizmowi jakiekolwiek zerwanie transmisji powoduje natychmiastow± aktualizację pliku lokalnego (wielko¶ci plików będa wtedy różne).



Wyszukiwarka

Podobne podstrony:
Jak pobrać i pokazać aktualne notowania średnich kursów walut z NBP, PHP Skrypty
Jak pobrać i zapisać na dysk wskazane strony WWW, PHP Skrypty
Jak stworzyć indeks pierwszych liter dla wybranej kolumny z tabeli, PHP Skrypty
Jak wypisać w tabeli zawartość pliku tekstowego z polami oddzielonymi separatorem, PHP Skrypty
Jak wysłać mailem w formacie HTML zawartość tabeli z bazy danych, PHP Skrypty
Jak uzyskać IP lub domenę z jakiej łączy się użytkownik, PHP Skrypty
Jak wykryć i pokazać liczbę osób oglądających aktualnie stronę WWW, PHP Skrypty
Jak sprawdzić czy w bazie danych istnieje aktualnie dodawana treść, PHP Skrypty
Jak zapisywać do pliku numery IP osób odwiedzających stronę, PHP Skrypty
Jak sprawdzić typy i atrybuty ustawione dla każdej z kolumn tabeli, PHP Skrypty
Jak sprawdzić czy zmienna przechowuje liczbę całkowitą lub rzeczywistą, PHP Skrypty
Jak stworzyć koszyk zamówień do sklepu internetowego z wykorzystaniem cookies, PHP Skrypty
Jak wysłać e-mail korzystając z gniazd (socket) zamiast funkcji mail, PHP Skrypty
jak stworzyc licznik klikniec ze statystyka dzienną, PHP Skrypty
Jak pobrać i zapisać do pliku?resy stron oraz wyszukiwarek, z których użytkownicy wchodzą na naszą s
Jak pobrać zakupioną gre aplikacje JAVA na komputer bezpośrednio

więcej podobnych podstron