Pridanie CRON API/Interface

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Peppy
Člen | 137
+
0
-

Čo tak pridať aj CRON ? :)

Vyki
Člen | 388
+
0
-

To není moc konkrétní nápad. Co konkrétně spojeno s CRONem bych chtěl do Nette přidat? Úlohy pro CRON se většinou stejně přidávají ručně do tabulky v administraci webhostingu.

Majkl578
Moderator | 1364
+
0
-

A co ti brání napsat část aplikace (modul) využívající CLI?

PJK
Člen | 70
+
0
-

Myslím, že je to zbytečné.

  • Ten, kdo potřebuje dělat něco důležitého na serveru, nebude to (doufám :D) programovat v PHP.
  • Je to zbytečné nafukování štíhlého frameworku, minimum myslitelných aplikací CRON opravdu potřebuje.
  • Stejně většinou musíš „CRON jobs“ zaregistrovat ručně.
setka
Člen | 10
+
0
-

Měl bych k tomu poznámku. Hostingy obvykle službu CRON řeší tak, že se někde v administraci nastavuje URL, které se v daném čase „stahuje“. Tj. CRON úlohy spouští PHP skze web server (typicky Apache).

Tohle řešení má výhodu v realtivní jednoduchosti a nenáročnosti na konfiguraci a zabezpečení hostingu. Přináší ovšem i problémy:

  • nutnost řešit autentizaci, aby tu CRON URL nevolal někdo „zvenku“ (ne vždy je to nutnost, ale často ano)
  • na úlohu se aplikují omezení webserveru – nejčastěji se projeví max. čas běhu, který nezávisle na konfiguraci php omezuje např. na 15 minut Apache mod_fastcgi (což je momentálně asi nejlepší řešení PHP hostingu z hlediska výkonu, bezpečnosti a stability)
  • naopak výhodou je možnost snadného otestování „CRON“ úlohy prostým zadáním URL (to lze ale řešit na bázi zakázání HTTP přístupu na produkčním prostředí)

Takže např. na našem firemním hostingu jsme zavedli podle mě čistější způsob, a to takový, že se definovaný skript pouští přes php-cli, a úplně se tak obchází webserver. Takže by bylo zajímavé mít pro tento případ v Nette nějakou infrastrukturu, která se obejde bez HttpRequestu, a umožní buď podle CLI parametrů, ENV proměnné, nebo nějak jinak volat určitý presenter, který zároveň nebude přístupný přes HTTP. Můžu si to udělat sám pro konkrétní případ, ale nebude to tak univerzální a vyladěné :-)

Mimo jiné má naše řešení výhodu v tom, že při přenosu aplikace z vývojového serveru na produkční není nutné nic nastavovat v nějaké administraci. Každý virtualhost má složky /cron.d/{5-min, 1-hour, 1-day} jejichž obsah (*.php soubory) se periodicky spouští. Pro složitější definici úseků lze v cron.d udělat konfigurační soubor se standardní cron notací. Pro testování těch úloh (spouštění ručně) máme snadno použitelný nástroj.

norbe
Backer | 405
+
0
-

Myslíš mít nástroj jakým je např. je Cli Router? :-)