Taches de fond qui ne s'exécute pas (Nextcloud 19)

Bonjour,

J’ai installĂ© Nextcloud (19.0.1) sur un Synology via docker. Tout fonctionne bien.

Cependant les taches de fonds ne s’exĂ©cutent pas. Sur aucun des choix possible (AJAX, WebCron, et Cron).

DĂ©jĂ , 1ere question : Est ce grave ?

Et la 2Úme : HELP, comment faire pour que ça fonctionne ?
J’ai essayĂ© de relier via easycron, mais rien ne change, j’ai toujours un message dans l’interface admin qui me dit : “Certaines tĂąches n’ont pas Ă©tĂ© exĂ©cutĂ©es depuis 1il y a 3 jours. Veuillez envisager de passer Ă  un systĂšme cron.”
Sur easycron, j’ai le message “success” qui apparait.

C’est peut-ĂȘtre un bug visuel ?

Par avance merci de votre aide,

Si j’ai oubliĂ© des infos, veuillez m’excuser.

Julien

Es-tu sĂ»r d’avoir bien configurĂ© l’URL d’appel dans easycron ?
As-tu essayé de lancer le cron à la main dans ton browser ?

Pour la gravité cela va poser des problÚmes à un moment ou à un autre sans cette tache de fond (rappels, tache de maintenance du nextcloud
)

Oui j’ai bien configurĂ© la bonne URL.
Et lorsque je lance l’URL dans mon navigateur, le rĂ©sultat est “Success” 


Ton easycron tourne ou ? sur le mĂȘme syno que ton NC ? tu utilises une URL d’appel avec une adresse IP et non un nom de domaine ?

J’utilise une URL d’appel vers un nom de domaine.

De quel info tu as besoin ?

Bonjour,
Pour cron, as tu installé et configuré crontab comme le demande la doc officielle ?

Cette partie la j’ai laissĂ© en auto, car c’était sur AJAX et j’ai pas eu le besoin de le changer.
La aucune actualisation des taches de fond ne fonctionne donc j’ai voulu changer en webcron et rien non plus.

Pour cron
 j’ai rien fait.
Mon fichier cron.php est comme ça :

<?php /** * @copyright Copyright (c) 2016, ownCloud, Inc. * * @author Artem Sidorenko * @author Christopher SchĂ€pers * @author Christoph Wurst * @author Damjan Georgievski * @author Daniel Kesselberg * @author Jakob Sack * @author Joas Schilling * @author Jörn Friedrich Dreyer * @author Ko- * @author Michael Kuhn * @author Morris Jobke * @author Oliver Kohl D.Sc. * @author Robin Appelman * @author Roeland Jago Douma * @author Steffen Lindner * @author Thomas MĂŒller * @author Vincent Petry * * @license AGPL-3.0 * * This code is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License, version 3, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License, version 3, * along with this program. If not, see * */ require_once __DIR__ . '/lib/versioncheck.php'; try { require_once __DIR__ . '/lib/base.php'; if (\OCP\Util::needUpgrade()) { \OC::$server->getLogger()->debug('Update required, skipping cron', ['app' => 'cron']); exit; } if ((bool) \OC::$server->getSystemConfig()->getValue('maintenance', false)) { \OC::$server->getLogger()->debug('We are in maintenance mode, skipping cron', ['app' => 'cron']); exit; } // load all apps to get all api routes properly setup OC_App::loadApps(); \OC::$server->getSession()->close(); // initialize a dummy memory session $session = new \OC\Session\Memory(''); $cryptoWrapper = \OC::$server->getSessionCryptoWrapper(); $session = $cryptoWrapper->wrapSession($session); \OC::$server->setSession($session); $logger = \OC::$server->getLogger(); $config = \OC::$server->getConfig(); // Don't do anything if Nextcloud has not been installed if (!$config->getSystemValue('installed', false)) { exit(0); } \OC::$server->getTempManager()->cleanOld(); // Exit if background jobs are disabled! $appMode = $config->getAppValue('core', 'backgroundjobs_mode', 'ajax'); if ($appMode === 'none') { if (OC::$CLI) { echo 'Background Jobs are disabled!' . PHP_EOL; } else { OC_JSON::error(['data' => ['message' => 'Background jobs disabled!']]); } exit(1); } if (OC::$CLI) { // set to run indefinitely if needed if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) { @set_time_limit(0); } // the cron job must be executed with the right user if (!function_exists('posix_getuid')) { echo "The posix extensions are required - see http://php.net/manual/en/book.posix.php" . PHP_EOL; exit(1); } $user = posix_getpwuid(posix_getuid()); $configUser = posix_getpwuid(fileowner(OC::$configDir . 'config.php')); if ($user['name'] !== $configUser['name']) { echo "Console has to be executed with the user that owns the file config/config.php" . PHP_EOL; echo "Current user: " . $user['name'] . PHP_EOL; echo "Owner of config.php: " . $configUser['name'] . PHP_EOL; exit(1); } // We call Nextcloud from the CLI (aka cron) if ($appMode !== 'cron') { $config->setAppValue('core', 'backgroundjobs_mode', 'cron'); } // Work $jobList = \OC::$server->getJobList(); // We only ask for jobs for 14 minutes, because after 5 minutes the next // system cron task should spawn and we want to have at most three // cron jobs running in parallel. $endTime = time() + 14 * 60; $executedJobs = []; while ($job = $jobList->getNext()) { if (isset($executedJobs[$job->getId()])) { $jobList->unlockJob($job); break; } $job->execute($jobList, $logger); // clean up after unclean jobs \OC_Util::tearDownFS(); $jobList->setLastJob($job); $executedJobs[$job->getId()] = true; unset($job); if (time() > $endTime) { break; } } } else { // We call cron.php from some website if ($appMode === 'cron') { // Cron is cron :-P OC_JSON::error(['data' => ['message' => 'Backgroundjobs are using system cron!']]); } else { // Work and success :-) $jobList = \OC::$server->getJobList(); $job = $jobList->getNext(); if ($job != null) { $job->execute($jobList, $logger); $jobList->setLastJob($job); } OC_JSON::success(); } } // Log the successful cron execution $config->setAppValue('core', 'lastcron', time()); exit(); } catch (Exception $ex) { \OC::$server->getLogger()->logException($ex, ['app' => 'cron']); } catch (Error $ex) { \OC::$server->getLogger()->logException($ex, ['app' => 'cron']); }

Je n’ai rien touchĂ© encore

Pas trùs lisible 
 :sweat:
Désolé

Si tas rien fait pour cron, c normal que ça fonctionne pas. Il faut sélectionner cron dans les paramÚtres admin, puis installer crontab sir ton serveur pour éditer le fichier crontab de www-data
Le fichier cron.php est un fichier exĂ©cutable que crontab exĂ©cutera toutes les 5 mn si c’est bien configurĂ©. Le contenu de cron.php est sans intĂ©rĂȘt.

Je vais poser une question bĂȘte mais, comment installer crontab sur mon serveur ? (je suis sur Docker Synology)

Salut,
HonnĂȘtement
 Je sais pas. Je ne suis pas familier des NAS. J’ai pu voir plusieurs tuto sur internet en tapant “crontab nas” qui peuvent aider mais ils ne s’accordent pas tous. Par exemple celui lĂ  sous entend quon peut le faire trĂšs simplement via l’interface du nas.

Hello,
Je suis intĂ©resse car j’ai le mĂȘme soucis.
J’ai d’abord essayĂ© via EasyCron et mĂȘme s’il m’indique “Success” j’ai toujours le message m’indiquant que certaines (lesquelles ?) taches n’ont pas Ă©tĂ© exĂ©cutĂ© depuis x temps.
J’ai Ă©galement essayĂ© de planifier une tache Cron sur mon syno au travers d’une tache planifiĂ©e avec un script de type : curl “http://adresseduserveur/cron.php” mais, mĂȘme si le serveur exĂ©cute la tĂąche sans erreur, toute les 5 min, le message reste le mĂȘme avec cependant une icĂŽne Orange au lieu de rouge avec EasyCron. Le message ne change pas.

Comment connaitre les tĂąches qui ne s’exĂ©cutent pas ? Comment etre sur que les tĂąches actuelles s’exĂ©cutent correctement ?
Est ce que mon script est correct ?