[php] wget i fopen...

0

Witam!

Napisałem ostatnio skrypt w PHP, który łączy się z pewnym serwerem, coś tam pobiera i zapisuje do pliku, korzystając z funkcji fopen, flock, fwrite.

Wywołanie tego skryptu chcę wykonywać w określonych odstępach czasu, więc wykorzystuję do tego linuksowy cron. I teraz pojawia się problem - korzystam z narzędzia wget.

Wywołanie:
wget --spider http://..../skrypt.php

opcja "--spider", bo bez niej pobrane z www dane są zrzucane do plików skrypt.php.* w katalogu domowym
ale zachowanie jest dziwne, bo... przy opcji --spider w ogóle nie zachodzi zapisywanie danych do pliku na serwerze (te funkcje fopen, flock, fwrite, fclose)... Bez opcji --spider działa jak należy :|

Rozwiązanie znalazłem - "wget -O /dev/null http://..../skrypt.php", ale wydaje mi się ono nieeleganckie. O ile pamiętam - "curl" też sprawia tutaj jakieś problemy.

Czy ktokolwiek może mi wyjaśnić, dlaczego tak się dzieje?
Mam nadzieję, że nie namieszałem zbytnio.

Pozdrawiam,
beton

0

"wget -O /dev/null http://..../skrypt.php" malo eleganckie? a po co niby zostal stworzony /dev/null ? :)
a ten serwer do jest lokalny? bo jak tak, to mozesz zamiast wget'a uzyc php'a. znaczy sie: cat skrypt.php | php

0

ale robię bałagan - zmienił się ID topiku czy coś... i założyłem drugi :(
http://4programmers.net/Forum/347132

błagam o wyrozumiałość :(

Myślę, że jest mało eleganckie, bo wydaje mi się, że rozwiązanie z "--spider" polega na tym, że nie pobiera żadnych danych z www, przez co nie zapycha sieci. Serwer nie jest lokalny, to skrypt na serwerze free.of.pl

(Jesli chodzi o rozwiązanie z narzędziem "php", to można chyba prościej: "php skrypt.php")

Jeszcze jedno - skrypt korzysta z funkcji fsockopen - może w tym trybie cichym (mam na myśli spidera) pojawia się jakiś error, czy coś, że skrypt po prostu gdzieś staje - jeszcze to sprawdzę.

Tymczasem główny problem to właśnie wpływ trybu działania narzędzia wget/curl na działanie skryptu, bo zaznaczam, że tak jak zrobiłem, albo chociaż samo "wget http://.../skrypt.php" po prostu działa

Pozdrawiam,
beton

0
beton84 napisał(a)

ale robię bałagan - zmienił się ID topiku czy coś... i założyłem drugi :(
http://4programmers.net/Forum/347132

?p=# to ID postu, nie tematu.

(Jesli chodzi o rozwiązanie z narzędziem "php", to można chyba prościej: "php skrypt.php")

„php -f skrypt.php”

Z tego co przeczytałem o narzędziu wget (nie jestem posiadaczem GNU, GNU/Linuksa, BSD ani żadnego innego Uniksa - póki co) wget --spider jedynie sprawdza, czy dany plik istnieje w sieci. Zapewne robi to wykonując żądanie GET z jakimś nagłówkiem albo HEAD. Żądanie to nie powoduje wykonania skryptu.

Myślę, że jest mało eleganckie, bo wydaje mi się, że rozwiązanie z "--spider" polega na tym, że nie pobiera żadnych danych z www, przez co nie zapycha sieci. Serwer nie jest lokalny, to skrypt na serwerze free.of.pl

Skoro w żaden sposób nie analizujesz treści generowanej przez skrypt, domyślam się, że ten skrypt żadnej treści nie generuje, a więc nie obciąża zbytnio łącza. Poza tym, ze wspomnianej wyżej strony wyczytałem, że "This feature needs much more work for Wget to get close to the functionality of real web spiders."

0

dziekuję za odpowiedź

przeglądałem skrypt i błędów, żadnych nie było
ale faktycznie możliwe, że wget --spider nie łączy się po GET tylko HEAD i może to inaczej działa. musze się jeszcze zagłębić w manuala

ale zapewniam Cię, że w jednej aplikacji już wykorzystywałem własnie "wget --spider", który wywoływał skrypt, który pobierał jakieś dane z jednej bazy i wrzucał przetworzone do drugiej - w takim wypadku łatwo podejrzeć, że mimo iż mam "spidera", to coś się wykonuje, bo baza danych uzupełnia się o nowe rekordy

mimo wszystko, nie męczę już i dziekuję za odpowiedzi :]

1 użytkowników online, w tym zalogowanych: 0, gości: 1