[php]Tlumaczenie słów na podstawie słownika online


(Raul1993) #1

Witam

Napisałem skrypt w php, który pobiera listę słówek z określonego pliku i tłumaczy je po kolei na podstawie słownika megasłownik.pl pobierając dla każdego słówka inny plik strony i wyszukując w nim definicji słowa. Gdy w pliku umieściłem kilkadziesiąt słówek, skrypt wykonał się, ale później zauważyłem, że nie mogę połączyć się ze stroną www słownika. Gdy wpisywałem adres w przeglądarce, zamiast strony pokazywał mi się biały ekran. Sytuacja wróciła do normy po kilku minutach. Czy to był ban ? Jeśli tak, to dlaczego go dostałem? Obciążyłem im serwer ?

Sytuacja nie była jednorazowa, zdarza się zawsze gdy tłumaczę dużą ilość słówek.


(Krzkaczor) #2

Może po prostu serwer ma słabe serwery (spróbuj wejść z innego ip wtedy i sie przekonasz). Ew. w swoim skrypcie upewnij sie ze wysyłasz jakieś sensowne nagłówki przeglądarki, możliwe że blokują różne boty (w co wątpie).

Powodzenia :wink:


(Raul1993) #3

Tzn. ? Pliki stron pobieram przez funkcję file_get_contents().

A jeśli mają słabe serwery to jest na to jakieś lekarstwo? W pętli, w której tłumaczone są kolejne słówka dodałem polecenie sleep(5). Niby trochę pomogło, ale problem nadal czasem występuje no i skrypt trwa dosyć długo. Może zatem jest inne rozwiązanie?

EDIT

Zrobiłem coś takiego:

$opts = array(

  'http'=> array(

    'method'=> "GET",

    'user_agent'=> $_SERVER['HTTP_USER_AGENT']

  )

  ); 


  $context = stream_context_create($opts);

I wywołałem file_get_contents z parametrem context. Nie pomogło EDIT2 Jeśli nie mam dostępu do strony słownika, to skrypt oczywiście również się nie wykonuje. Wyskakują wtedy takie błędy:

Warning: file_get_contents(http://megaslownik.pl/slownik/angielsko_polski/kill+time) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in...