CLI a spouštění cronu Nette 2.2
- wicked
- Člen | 290
Ahoj,
počel jsem hodně návodů, ale všechno 3roky+ staré kde bylo jeste enviroment, getContex atd …
Chci se zeptat, jak teď řešíte CRON s Nette?
Jak nastavit routy a overeniv prenteru, ze se opravdu jedna o konzoli?
Mám takovou to routu
$router[] = new CliRouter(array('action' => 'Front:Cron:cron'));
Kdyz pustim v terminalu link, tak to vypise OK, ale jak zabranit pusteni pres prohlizec? Aby to slo jen v terminalu?
public function actionCron() {
echo 'FUNGUJU!';
$this->terminate();
}
Děkuji
Editoval wicked (18. 1. 2015 13:32)
- wicked
- Člen | 290
Nechci využívát další doplněk :)
Rád bych jen veděl, jak v presenteru osetrit, jestli je to z konzole nebo ne :)
public function actionCron() {
if(NECO PRIDAT SEM :) ) {
echo 'OK!';
$this->terminate();
} else {
$this->flashMessage('Nemáte oprávnění pro tuto akci!');
$this->redirect('Homepage:default');
}
}
- Marek Šneberger
- Člen | 130
Místo těhle šílenejch ifů bych prostě použil kdyby/console. Za prví máš aspoň jistotu že na nic nezapomeneš, a za druhý bezpečnost – prostě se to pustí jenom z konzole. A napsat command jev kdyby/console celkem hračka :)
- wicked
- Člen | 290
Nevím ale nějak jse myslel, že udělat tento 1 if a mám vystaráno … co dál bych potřeboval řešit?
Ověřit, zda je přistup z konzole nebo ne a jestli ne tak presmerovat na homepage a doplnit to flashmessage …
Nebo to je tak strasne spatne a musim kvuli tomu vyuzivat dalsi doplnek?
- Milo
- Nette Core | 1283
Cron přes presenter vůbec neřeším. V aplikaci mám adresář
/cron
a v něm jednotlivé skripty. Jejich začátek vypadá asi
takhle:
namespace App\Cron;
$container = require __DIR__ . '/../app/bootstrap.php';
$tempDir = $container->getParameters()['tempDir'];
/** @var $db \DibiConnection */
$db = $container->getByType('DibiConnection');
V bootstrap.php
navíc ještě zapínání debug módu
z konzole:
if (PHP_SAPI === 'cli') {
$configurator->setDebugMode(isset($_SERVER['argv']) && in_array('--debug', $_SERVER['argv'], TRUE));
} else {
$configurator->setDebugMode(['a.b.c.d', 'e.f.g.h']);
}
Editoval Milo (20. 1. 2015 15:43)