Zavolání souboru (presenteru) v CRONu
- ForestCZE
- Člen | 209
Ahoj, mám ve svém projektu Presenter
app/CronModule/presenters/UsersPresenter.php
v něm je skript na to, že se provede něco v databázi.
Pokud načtu stránku s tím presenterem, tj. mujweb.cz/cron/, tak se skript provede.
Jakmile ho dám jako CRON úlohu, tak ani ťuk.
Na VPS zadám příkaz:
crontab -e
A nastavím úlohu:
*/1 * * * * php /var/www/domeny/domena/app/CronModule/presenters/UsersPresenter.php
To znamená, že každou minutu (abych nemusel dlouho čekat na test) by se měl provést ten skript. Bohužel se tak nestane. Co dělám špatně? Předem děkuji za pomoc.
Četl jsem, že se dá použít Kdyby/Console, ale v těch knihovnách ještě nejsem zběhlý. Lze to tedy použít i nějak takto? Díky.
- Petr Parolek
- Člen | 455
Ahoj, tady máš návod, jak rozchodit Kdyby console https://github.com/…/en/index.md
- Petr Parolek
- Člen | 455
Nebo, jak jsem psal přes kdyby console, např.
php /var/www/domeny/domena/www/index.php yourcommand:parameter
.
Editoval ppar (4. 5. 2017 23:47)
- ForestCZE
- Člen | 209
@ppar
Tak jsem se po dvou letech dostal k tomu, že potřebuji opět konzoli a rozhodl jsem se to řešit tak, jak by se mělo :)
App/Console/Update24Command.php:
<?php
namespace App\Console;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class Update24Command extends Command
{
protected function configure(): void
{
$this->setName('app:update24');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeLn('Test Command');
return 0;
}
}
config.nenon
extensions:
console: Kdyby\Console\DI\ConsoleExtension
console:
url: http://mojedomena.cz
decorator:
Symfony\Component\Console\Command\Command:
tags: [kdyby.console.command]
services:
- App\Console\Update24Command
router: App\Router\RouterFactory::createRouter
- App\Model\XMLParser
- App\Model\HotelManager
- App\Model\DatabaseConnection
- App\Model\Database
Když pak v konzoli pomocí cd příkazu přejdu do složky s projektem a zadám příkazy:
php www/index.php app:update24
php www/index.php info
Oba příkazy projdou, žádný error, ale zároveň se nic nevypíše. Co mám špatně? Děkuji předem za pomoc.
Editoval ForestCZE (23. 7. 2019 10:46)
- Petr Parolek
- Člen | 455
mám za to, že v kdyby nefunguje
php www/index.php app:update24
, musíš použít
php bin/console app:update24
viz https://github.com/…/en/index.md#…
- Petr Parolek
- Člen | 455
jejda, složku si dej do kořene projektu, viz cesta v require a název
souboru bez koncovky – v linuxu vytvoříš soubor
přes touch bin/console
- ForestCZE
- Člen | 209
ppar napsal(a):
jejda, složku si dej do kořene projektu, viz cesta v require a název souboru bez koncovky – v linuxu vytvoříš soubor přes
touch bin/console
Jo, než jsi odepsal, tak už jsem to dal dohromady. Teď mi to háže:
[2019-07-23 11-30-11] TypeError: Return value of App\Console\Update24Command::configure() must be an instance of App\Console\void, none returned in /var/www/html/app/console/Update24Command.php:14 @ CLI (PID: 10305): bin/console app:update24 @@ exception--2019-07-23--11-30--f86c3131a0.html
Mám změnit u té metody : int na : void a odstranit ten return?
EDIT: Aha, ne execute, ale configure.
Editoval ForestCZE (23. 7. 2019 11:45)
- David Matějka
- Moderator | 6445
vypada, ze mas stare php – konkretne 7.0, void je podporovane od 7.1. a vzhledem k tomu, ze php 7.0 jiz neni podporovane, doporucil bych upgradovat (na 7.3)