Fórum Ubuntu CZ/SK
Ostatní => Ubuntu Server => Téma založeno: ruenix 28 Června 2011, 22:41:41
-
V cronu mám následující záznam:
5 10,17 * * * wget --quiet --delete-after http://www.domena.cz/admin/import/admin.php?php=neco
očekával bych, že se tento příkaz pustí dvakrát denně v 10:05 a 17:05, jenže log domény vypadá následovně:
stale_stejna_ip - - [28/Jun/2011:10:04:59 +0200] "GET /admin/import/admin.php?php=neco HTTP/1.0" 200 510 "-" "Wget/1.12 (linux-gnu)"
stale_stejna_ip - - [28/Jun/2011:10:20:00 +0200] "GET /admin/import/admin.php?php=neco HTTP/1.0" 200 499 "-" "Wget/1.12 (linux-gnu)"
stale_stejna_ip - - [28/Jun/2011:10:35:02 +0200] "GET /admin/import/admin.php?php=neco HTTP/1.0" 200 510 "-" "Wget/1.12 (linux-gnu)"
stale_stejna_ip - - [28/Jun/2011:11:35:22 +0200] "GET /admin/import/admin.php?php=neco HTTP/1.0" 200 453 "-" "Wget/1.12 (linux-gnu)"
stale_stejna_ip - - [28/Jun/2011:10:50:06 +0200] "GET /admin/import/admin.php?php=neco HTTP/1.0" 200 500 "-" "Wget/1.12 (linux-gnu)"
stale_stejna_ip - - [28/Jun/2011:11:05:10 +0200] "GET /admin/import/admin.php?php=neco HTTP/1.0" 200 510 "-" "Wget/1.12 (linux-gnu)"
stale_stejna_ip - - [28/Jun/2011:11:20:16 +0200] "GET /admin/import/admin.php?php=neco HTTP/1.0" 200 510 "-" "Wget/1.12 (linux-gnu)"
stale_stejna_ip - - [28/Jun/2011:17:05:00 +0200] "GET /admin/import/admin.php?php=neco HTTP/1.0" 200 453 "-" "Wget/1.12 (linux-gnu)"
Jinými slovy ten wget se spustil vícekrát než měl. Kontroloval jsem všechny příkazy, které cron spouští, ale tenhle php skript opravdu volá jen ten jediný.
možná důležitou poznámkou je, že podle kodéra ten skript může běžet až půl hodiny (limity php jsou podle toho nastavené).
Zkoušel jsem všude možně hledat, ale nenašel jsem nic co by toto vysvětlovalo. Napadlo mě jestli cron po 15 minutách běhu příkaz nespustí znova, ale nikde jsem pro tuhle teorii nenašel potvrzení.
Jinak na serveru s cronem je 10.04 a na serveru, kde ten skript běží je 10.10.
-
Hmm... zajimavy, ten zapis je imo ok
zkus izolovat jednotlivy vrstvy:
- stejny nastavena lajna touchne, nebo vytvori soubor (zjistis, jestli blbne cron)
- wget na jiny url, ktery nebude casove narocny napr. <?php echo 'hello world';?>
- zjistit, jestli nejakou zahadou webserver (apache?) nema nastavenej casovej limit na request (ale ze by wget sam od sebe resetly spojeni zkusil znovu... to jsem teda linej hledat)
obecne:
bejva lepsi balit krony do shell skriptu
neni dobry wgetovat soubor pres webserver (uz jen kvuli tomu, ze pak nastavujes limit skriptu pro celou domenu/server) - lepsi je to poustet pres cli primo na serveru
-
Teda jen co jsem to napsal mě napadlo, že by ještě problém mohl být přímo v tom wgetu, že prostě zavolá adresu, 15 minut nedostane odpověď, tak to zkusí znova.
EDIT:
Tak je to přesně tím, celý den nad tím přemýšlím a hned jak napíšu dotaz mi to dojde, takže řešením bude wget -t 1
-
wget
--read-timeout=seconds
Set the read (and write) timeout to seconds seconds. The "time" of this timeout refers to idle time: if, at any point in the download, no data
is received for more than the specified number of seconds, reading fails and the download is restarted. This option does not directly affect
the duration of the entire download.
Of course, the remote server may choose to terminate the connection sooner than this option requires. The default read timeout is 900 seconds.
--tries=number
Set number of retries to number. Specify 0 or inf for infinite retrying. The default is to retry 20 times, with the exception of fatal errors
like "connection refused" or "not found" (404), which are not retried.
-
JJ přesně na tohle jsem narazil, ale byl trochu problém s uvědoměním si, že 900 sekund je 15 minut ;D