Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cronjob: Stiller Modus (wenigstens als Parameter) ohne (Erfolgs-)Meldung #6119

Open
alxndr-w opened this issue Jul 3, 2024 · 3 comments
Open
Labels
Cronjob "Cronjob"-Addon related things

Comments

@alxndr-w
Copy link
Contributor

alxndr-w commented Jul 3, 2024

Feature description / Feature Beschreibung

protected function execute(InputInterface $input, OutputInterface $output): int
{
$io = $this->getStyle($input, $output);
// indicator constant, kept for BC
define('REX_CRONJOB_SCRIPT', true);
$job = $input->getOption('job');
if (false !== $job) {
return $this->executeSingleJob($io, $job);
}
$manager = rex_cronjob_manager_sql::factory();
$errors = 0;
$manager->check(static function (string $name, bool $success, string $message) use ($io, &$errors) {
/** @var int $errors */
if ($success) {
$io->success($name . ': ' . $message);
} else {
$io->error($name . ': ' . $message);
++$errors;
}
});
/** @var int $errors */
if ($errors) {
$io->error('Cronjobs checked, ' . $errors . ' failed.');
return 1;
}
$io->success('Cronjobs checked.');
return 0;
}

Ich gebe das Kundenfeedback mal weiter ohne Bewertung - mit der Frage, ob man beim Aufruf über die Kommandozeile evtl. einen Parameter mitgeben kann, um die Ausgabe im Erfolgsfall zu unterdrücken - oder es eine andere Möglichkeit gibt, dass hier Best Practice (laut Kunde) eingehalten wird.

3.) Der Cronjob ist trotzdem nicht leise:

#sudo -u xyz /usr/bin/php /srv/www/sites/abc/public/redaxo/bin/console cronjob:run

[OK] Cronjobs checked.

Das ist ein no-go, was jeder der Cronjobs schreibt wissen sollte.
Jede Ausgabe eines Cronjobs produziert eine E-Mail an den Admin, da
von einem Fehler ausgegangen wird - cronjobs haben "leise" zu sein.

Ich habe mir jetzt mit ">/dev/null" beholfen und hoffe inständig, dass
Fehlermeldungen an /dev/stderr gehen, mal sehen.
Da die Warnung von 2.) schon mal nicht nach stderr geht, bin ich nicht
zuversichtlich, dass Fehler korrekt ausgegeben und somit erkannt werden.

@gharlan
Copy link
Member

gharlan commented Jul 3, 2024

Mit --quiet (bzw. -q) kann man die Ausgabe unterdrücken (generell bei allen Commands).
Wobei dann auch die Job-Errors unterdrückt werden, weil die auch nur als normale Message ausgegeben werden.
Nur harte Fehler außerhalb des Job-Codes (also Fehler im Cronjob-Addon etc.) würden trotzdem ausgeben werden (über STDERR).

Vielleicht ist das so genau richtig, vielleicht auch nicht. Ist in dem Kontext vom Cronjob-Addon nicht so klar, finde ich.
Man kann argumentieren, dass der native Job nur Fehler auslösen sollte, wenn das Cronjob-Handling von REDAXO nicht funktioniert (also die genannten harten Fehler). "Normale" Fehler innerhalb der Jobs hingegen werden über das Cronjob-Log innerhalb von REDAXO kenntlich gemacht.
Kann man aber auch anders sehen, dass auch im nativen Cronjob diese "normalen" Fehler über stderr ausgegeben werden sollten.

@gharlan gharlan added the Cronjob "Cronjob"-Addon related things label Jul 3, 2024
@alxndr-w
Copy link
Contributor Author

alxndr-w commented Jul 3, 2024

Wichtig wäre hier in meinen Augen, dass eine Erfolgs-Ausgabe-Nachricht nicht dazu führt, dass man die Fehlerbenachrichtigung per Mail im Fehlerfall "kaputt" macht - denn das wurde bemängelt.

@gharlan
Copy link
Member

gharlan commented Jul 3, 2024

Wobei es denke ich ok ist, dass man dazu -q dann nutzen kann.
Bei DF finde ich bei uns die Erfolgsmeldung bei den Cronjobs zum Beispiel durchaus hilfreich.

(Muss aber zugeben, dass ich nicht weiß, was in dem Bereich so Best Practice ist)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Cronjob "Cronjob"-Addon related things
Development

No branches or pull requests

2 participants