Portál AbcLinuxu, 10. května 2025 13:32

Dotaz: Spouštění bash scriptu php jednou za 15s

11.2.2014 09:49 Bob
Spouštění bash scriptu php jednou za 15s
Přečteno: 525×
Odpovědět | Admin
Ahoj, potřebuju pomocí php spouštět wget jednou za 15 vteřin, potřebuju to ale nějak ošetřit, aby se wget spouštěl jen pokud je někdo na webu online, ale jen jednou.

Příklad: Na webu je 10 lidí, jelikož je někdo online budu wgetem stahovat něco každejch 15 vteřin. Na webu je 0 lidí, nic se něděje.

dík za rady.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.2.2014 10:08 NN
Rozbalit Rozbalit vše Re: Spouštění bash scriptu php jednou za 15s
Odpovědět | | Sbalit | Link | Blokovat | Admin
cron, kontrolu si doskriptuj..
11.2.2014 10:19 Bob
Rozbalit Rozbalit vše Re: Spouštění bash scriptu php jednou za 15s
no jasný cron... Jenže nevím jak udělat aby se cron nespouštěl když na webu nebude nikdo....
11.2.2014 10:32 Bob
Rozbalit Rozbalit vše Re: Spouštění bash scriptu php jednou za 15s
tak mě napadlo spouštět pomocí php bash script kterej bude kontrolovat jestli existuje screen XXX když ne, vytvoří ho, v něm bude běžet wget..., pokud běží, nestane se nic. řekněme jednou za 30 min cronem killnu...

Ale představoval sem si to líp...
wamba avatar 11.2.2014 12:14 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Spouštění bash scriptu php jednou za 15s
cron každých 15s spustí něco jako je_nekdo_na_webu && wget ... :)
This would have been so hard to fix when you don't know that there is in fact an easy fix.
Jendа avatar 11.2.2014 11:59 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Spouštění bash scriptu php jednou za 15s
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jak určuješ, jestli „je někdo na webu“?
11.2.2014 12:22 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Spouštění bash scriptu php jednou za 15s
Odpovědět | | Sbalit | Link | Blokovat | Admin
cron má granularitu 1 minutu.

Nekonečná smyčka (while true do ), v ní ověří, že je někdo na webu (nějak), případně zavolá wget, usne na 15 sekund. Celý běh nebude přesně 15 sekund, ale pochybuji, že na tom nějak záleží.

V cronu si můžeš každou minutu zkontrolovat, že skript běží a pokud ne, znovu jej spustit.
11.2.2014 12:43 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Spouštění bash scriptu php jednou za 15s
cron má granularitu 1 minutu.
* * * * * /do/something.sh

* * * * * sleep 15 && /do/something.sh

* * * * * sleep 30 && /do/something.sh

* * * * * sleep 45 && /do/something.sh
11.2.2014 13:03 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Spouštění bash scriptu php jednou za 15s
Jasně, ale to pak zase budeš řešit současný běh více procesů. Když se something.sh zasekne (web bude zatížený, wget bude trvat několik minut), budeš každou minutu generovat 4 další procesy. Záleží na konkrétních požadavcích, zda mohou běžet současně, zda musí dodržet těch 15 sekund atd atd.

Nakonec zřejmě budou požadavky triviální, za tu dobu strávenou nad těmito odpovědmi všech by to již bylo napsané několikrát.
Řešení 1× (rADOn)
11.2.2014 13:01 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Spouštění bash scriptu php jednou za 15s
Odpovědět | | Sbalit | Link | Blokovat | Admin
Neodpovídám přímo na dotaz, protože si myslím, že by se úloha měla předělat tak, aby v ní takové taktování vůbec nemuselo být.

Například při každém dotazu si ověřit, zda v cache není stažený obraz starší, než těch 15 sekund. Pokud je starší, stáhne se nový, uloží do cache a předá prohlížeči.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
11.2.2014 13:45 Bob
Rozbalit Rozbalit vše Re: Spouštění bash scriptu php jednou za 15s
Přesně takhle sem to nakonec vyřešil. Projedu si obrázky a když jsou starší jak XX tak je rovnou stáhnu... Jednoduché jak facka :-)
11.2.2014 21:23 Bob
Rozbalit Rozbalit vše Re: Spouštění bash scriptu php jednou za 15s
Tak narazil jsem na menší problém: někdy se stane, že se script spustí dvojitě, je to asi dáno vlivem prodlevy než wget naváže komunikaci ze serverem, pokud v té době někdo načte stránku... Vyřešil jsem to tím, že před wgetem neustále zapisuju do souboru, spojil sem to s počítadlem návštěv :-)
11.2.2014 21:51 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Spouštění bash scriptu php jednou za 15s
Zamkni si ten soubor s čekáním. Když se vláknu nepodaří ten soubor otevřít, tak si počká na jeho naplnění.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.