Nette pod cronem
- crempa
- Člen | 198
Ahoj,
nehral jse si tu uz nekdo s Nette aplikaci (resp. casti aplikace) spoustenou cronem (tj. bez webserveru). Rad bych vyuzil veskera nastaveni, robotloader, pripojeni k databazi atd. co mam ve webove casti a pro cron vyhradil napr. jeden presenter. Zatim jsem vsak skoncil na „Method is not implemented“.
Pokud mate nekdo nejakou zkusenost, tak sem s tim at zase neobjevuju kolo :-)
Diky !
- romansklenar
- Člen | 655
A čeho se chyba týkala? Není to toto ukončení skriptu?
Laděnka má myslím i console mode, který by mohl pomoct při odhalování chyby, ale nezkoušel jsem jak to přesně funguje.
- crempa
- Člen | 198
no jako obejit to tim asi lze, ale na druhou stranu pokud ty cron scripty nechci mit pristupne zvenku tak je nutne zase nejake konfigurace apache navic..
no zatim to asi vyresim spesl bootstrapem, jen pro tento ucel, kde se nevytvori router a nespusti aplikace, Environment, config i loader by meli chodit (aspon se zda ze chodi :-)
- Patrik Votoček
- Člen | 2221
Jod napsal(a):
Skôr by som použil curl, wget ukladá na disk (ako curl -O).
Ale dobrý nápad.
Wget do /dev/null a nikam se ti nic neuklada
Editoval vrtak-cz (3. 6. 2009 16:01)
- edke
- Člen | 198
crempa wrote:
no jako obejit to tim asi lze, ale na druhou stranu pokud ty cron scripty nechci mit pristupne zvenku tak je nutne zase nejake konfigurace apache navic..
no zatim to asi vyresim spesl bootstrapem, jen pro tento ucel, kde se nevytvori router a nespusti aplikace, Environment, config i loader by meli chodit (aspon se zda ze chodi :-)
Urcite treba hladat pricinu, preco ti to nejde spustit cez shell. Riesenie wget/curl nesie so sebou viacero problemov. Jednak je skript verejne pristupny, rezia navyse osetrovat pristup k nemu atd. Jednak nemusis cez shell riesit veci ako max_execution_time a pod. Ja dokonca Nette/dibi vyuzivam pri viacerych nastrojoch napisanych v php, ktore pustam cez shell, ako rozne aktualizacne skripty, migracny skript databazy a dat z mysql do psql a pod.
Len sa treba povenovat spravnemu nastaveniu a pravam, aby ti korektne aplikacia logovala. Potom sa vzniknute problemy daju pekne riesit cez Debug. Ak sa dostanes ku konretnej chybe, kludne sa ozvi, ak budem vediet, pomozem. Fungujem pod ubuntu server a nemam s kombinaciou Nette-dibi-shell absolutne ziadne problemy a nemam ani ziadne obmedzenia oproti pouzivaniu Nette-dibi cez apache/lighttpd.
- pekelnik
- Člen | 462
romansklenar napsal:
A čeho se chyba týkala? Není to toto ukončení skriptu?
Ano :) jedná se přesně o tento řádek na kterém aplikace v konzoli skoná.
Jak řešit spouštění pod cronem s plným využitím Nette\Application?
Současná situace na mě působí dojmem jako by Nette spuštění v konzoli vůbec nepodporovala, naproti tomu zde ovšem existuje mnoho náznaků, že kozole podporována jest:
- chyba při neexistující sekci [console] v config.ini
- Environment::isConsole()
- Environment::CONSOLE
Předesílám, že řešení jako vrtěti wgetem nebo vynechání Nette\Application mi nepřijdou jako ideální z již zmíněných důvodů.
Co se týče použití, předpokládal bych něco jako:
$ php index.php Default:cron param1 param2
Mohl by, prosím, něxgdo osvětlit celou situaci?
Pokud bude vše jasné rád připravím stránku do dokumentace, neboť o tomhle tam není ani zmínka.
- Ondrej
- Člen | 110
pekelnik napsal(a):
Předesílám, že řešení jako vrtěti wgetem nebo vynechání Nette\Application mi nepřijdou jako ideální z již zmíněných důvodů.Co se týče použití, předpokládal bych něco jako:
$ php index.php Default:cron param1 param2
Mohl by, prosím, něxgdo osvětlit celou situaci?
Pokud bude vše jasné rád připravím stránku do dokumentace, neboť o tomhle tam není ani zmínka.
Toto me taky zajima. Kdyz jsem to zkoumal, tak jsem dosel k zaveru, ze se pouzije routovani, ktere ale nema zadnou URL k parsovani. Podle me consolove aplikace v Nette spoustet nejdou :(
edit: Aplikace podporuje pouze HTTP volani GET, POST, HEAD. https://api.nette.org/…ion.php.html#94
Editoval Ondrej (6. 7. 2009 13:59)
- romansklenar
- Člen | 655
pekelnik napsal(a):
Současná situace na mě působí dojmem jako by Nette spuštění v konzoli vůbec nepodporovala, naproti tomu zde ovšem existuje mnoho náznaků, že kozole podporována jest:
- chyba při neexistující sekci [console] v config.ini
- Environment::isConsole()
- Environment::CONSOLE
Konzolový mód se asi nedá detekovat, takže se musí manuálně zapnout. Zkus to s tímhle:
Debug::$consoleMode = TRUE;
Co se týče použití, předpokládal bych něco jako:
$ php index.php Default:cron param1 param2
No to nevím, asi to bude haprovat zase na stejném místě. Předávat parametry jde pouze přes povolené metody.
- Ondrej
- Člen | 110
pekelnik napsal(a):
$ php index.php Default:cron param1 param2
Mohl by, prosím, něxgdo osvětlit celou situaci?
Nette pod cronem jsem vyresil takto: https://forum.nette.org/…te-a-php-cli
- Pari
- Člen | 15
Mě pomohl tento článek http://interval.cz/…demona-cron/ trochu pochopit jak to nastavit (mám VPS s Plesk administrací).
- Majkl578
- Moderator | 1364
phx napsal(a):
A but v Apache nrbo v PHP omez zpousteni pouze pro localhost. Ono je to bezpecnejsi nez poustet z cronu primo php, protoze pak php bezi pod pravy cronu (nejcasteji roota).
V crontabu si můžeš nastavit pod jakým userem se ti to spustí. Je k tomu kolonka „user“.