Zavolání souboru (presenteru) v CRONu

ForestCZE
Člen | 209
+
0
-

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
+
+4
-

Ahoj, tady máš návod, jak rozchodit Kdyby console https://github.com/…/en/index.md

CZechBoY
Člen | 3608
+
-4
-

Muzes poslat klasickej http request pres prikaz wget http://....

Petr Parolek
Člen | 455
+
+3
-

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
+
-1
-

CZechBoY napsal(a):

Muzes poslat klasickej http request pres prikaz wget http://....

Paráda, to jsem přesně potřeboval, moc děkuju:)

ForestCZE
Člen | 209
+
0
-

@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
+
+1
-

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#…

ForestCZE
Člen | 209
+
0
-

@ppar

Aha, jasný no. Není mi něco jasné. Píšou tam:

It is suggested, that you create a bin/console file, with the following contents

Kde má být bin/console? Přímo v projektu? Jakou koncovku má mít ten file?

#!/usr/bin/env php
Tady nic neměním? Děkuju :)

Petr Parolek
Člen | 455
+
+1
-

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
+
0
-

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
+
+1
-

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)