Skip to content
Extraits de code Groupes Projets
Valider c7ecb7bf rédigé par esj's avatar esj
Parcourir les fichiers

Permettre la surcharge des fonctions appelées par '''cron'''. Création d'un...

Permettre la surcharge des fonctions appelées par '''cron'''. Création d'un répertoire '''cron''' accueillant les fonctions '''cron_*''' dont le nom se terminent maintenant par '''_dist''' et sont définies dans le fichier homonyme. La fonction '''cron''' accepte un argument supplémentaire décrivant le tableau des tâches, transmis à '''inc_cron''', ce qui permet de reconfigurer ponctuellement l'ordonnancement des tâches en profitant des verrouillages.
parent 0b654e9e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -444,6 +444,9 @@ ecrire/configuration/syndications.php -text
ecrire/configuration/transcodeur.php -text
ecrire/configuration/versionneur.php -text
ecrire/configuration/visiteurs.php -text
ecrire/cron/maintenance.php -text
ecrire/cron/popularites.php -text
ecrire/cron/syndic.php -text
ecrire/exec/accueil.php -text
ecrire/exec/admin_effacer.php -text
ecrire/exec/admin_plugin.php -text
......@@ -583,7 +586,6 @@ ecrire/inc/instituer_auteur.php -text
ecrire/inc/joindre.php -text
ecrire/inc/lang_liste.php -text
ecrire/inc/legender.php -text
ecrire/inc/maintenance.php -text
ecrire/inc/message_select.php -text
ecrire/inc/minipres.php -text
ecrire/inc/modifier.php -text
......@@ -591,7 +593,6 @@ ecrire/inc/notifications.php -text
ecrire/inc/petitionner.php -text
ecrire/inc/plonger.php -text
ecrire/inc/plugin.php -text
ecrire/inc/popularites.php -text
ecrire/inc/puce_statut.php -text
ecrire/inc/rechercher.php -text
ecrire/inc/referencer_traduction.php -text
......@@ -601,7 +602,6 @@ ecrire/inc/securiser_action.php -text
ecrire/inc/selectionner.php -text
ecrire/inc/selectionner_auteur.php -text
ecrire/inc/suivi_versions.php -text
ecrire/inc/syndic.php -text
ecrire/inc/tourner.php -text
ecrire/inc/traduire.php -text
ecrire/inc/utils.php -text
......
......@@ -18,9 +18,11 @@ function action_editer_site_dist() {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
$resyndiquer = false;
if (preg_match(',options/(\d+),',$arg, $r)) {
$id_syndic = $r[1];
editer_site_options($id_syndic);
$resyndiquer = editer_site_options($id_syndic);
// Envoi depuis le formulaire d'edition d'un site existant
} else if ($id_syndic = intval($arg)) {
......@@ -40,9 +42,9 @@ function action_editer_site_dist() {
set_request('reload', 'oui');
revisions_sites($id_syndic);
}
// Envoi depuis le formulaire de creation d'un site
else if ($arg == 'oui') {
} else if ($arg == 'oui') {
set_request('reload', 'oui');
$id_syndic = insert_syndic(_request('id_parent'));
revisions_sites($id_syndic);
......@@ -78,8 +80,6 @@ function action_editer_site_dist() {
$s = spip_query("SELECT id_syndic, descriptif FROM spip_syndic WHERE id_syndic=$id_syndic AND syndication IN ('oui', 'sus', 'off') LIMIT 1");
if ($t = spip_abstract_fetch($s)) {
include_spip('inc/syndic');
syndic_a_jour($id_syndic);
// Si on n'a pas de descriptif ou pas de logo, on va le chercher
$chercher_logo = charger_fonction('chercher_logo', 'inc');
......@@ -94,9 +94,14 @@ function action_editer_site_dist() {
@rename($auto['logo'],
_DIR_IMG . 'siteon'.$id_syndic.'.'.$auto['format_logo']);
}
$resyndiquer = true;
}
}
if ($resyndiquer) {
include_spip('cron/syndic');
syndic_a_jour($id_syndic);
}
// Rediriger le navigateur
$redirect = parametre_url(urldecode(_request('redirect')),
'id_syndic', $id_syndic, '&');
......@@ -353,6 +358,8 @@ function analyser_site($url) {
return $result;
}
// Enregistrre les options et retourne True s'il faut syndiquer.
// http://doc.spip.org/@editer_site_options
function editer_site_options($id_syndic)
{
......@@ -368,11 +375,10 @@ function editer_site_options($id_syndic)
if ($oubli == 'oui' OR $oubli == 'non')
spip_query("UPDATE spip_syndic SET oubli='$oubli' WHERE id_syndic=$id_syndic");
if ($resume == 'oui' OR $resume == 'non') {
spip_query("UPDATE spip_syndic SET resume='$resume' WHERE id_syndic=$id_syndic");
include_spip('inc/syndic');
syndic_a_jour($id_syndic);
}
if (!($resume == 'oui' OR $resume == 'non')) return false;
spip_query("UPDATE spip_syndic SET resume='$resume' WHERE id_syndic=$id_syndic");
return true;
}
?>
......@@ -12,19 +12,11 @@
if (!defined("_ECRIRE_INC_VERSION")) return;
// http://doc.spip.org/@envoyer_mail
function envoyer_mail($email, $sujet, $texte, $from = "", $headers = "") {
$envoyer_mail = charger_fonction('envoyer_mail','inc');
return $envoyer_mail($email,$sujet,$texte,$from,$headers);
}
//
// Mail des nouveautes
//
// http://doc.spip.org/@cron_mail
function cron_mail($t) {
function cron_mail_dist($t) {
$adresse_neuf = $GLOBALS['meta']['adresse_neuf'];
$jours_neuf = $GLOBALS['meta']['jours_neuf'];
// $t = 0 si le fichier de lock a ete detruit
......
......@@ -14,7 +14,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
// Diverses taches de maintenance
// http://doc.spip.org/@cron_maintenance
function cron_maintenance ($t) {
function cron_maintenance_dist ($t) {
// (re)mettre .htaccess avec deny from all
// dans les deux repertoires dits inaccessibles par http
......
......@@ -10,9 +10,18 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
// Cas particulier : optimiser est dans base/optimiser, et pas dans inc/
// il faut donc definir la fonction _cron ici.
// http://doc.spip.org/@cron_optimiser
function cron_optimiser_dist($t) {
optimiser_base();
return 1;
}
// heure de reference pour le garbage collector = 24h auparavant
// http://doc.spip.org/@optimiser_base
function optimiser_base($attente = 86400) {
......@@ -28,10 +37,6 @@ function optimiser_base($attente = 86400) {
}
//
// MySQL
//
// http://doc.spip.org/@optimiser_base_une_table
function optimiser_base_une_table() {
......
......@@ -10,23 +10,21 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
//
// Popularite, modele logarithmique
//
// http://doc.spip.org/@calculer_popularites
function calculer_popularites() {
function cron_popularites_dist($t) {
// Si c'est le premier appel, ne pas calculer
$t = $GLOBALS['meta']['date_popularites'];
ecrire_meta('date_popularites', time());
ecrire_metas();
if (!$t)
return;
return 1;
$duree = time() - $t;
// duree de demi-vie d'une visite dans le calcul de la popularite (en jours)
......@@ -69,14 +67,4 @@ function calculer_popularites() {
}
//
// Applique la regle de decroissance des popularites
//
// http://doc.spip.org/@cron_popularites
function cron_popularites($t) {
calculer_popularites();
return 1;
}
?>
......@@ -12,6 +12,11 @@
if (!defined("_ECRIRE_INC_VERSION")) return;
// http://doc.spip.org/@cron_syndic
function cron_syndic_dist($t) {
return executer_une_syndication();
}
//
// Effectuer la syndication d'un unique site, retourne 0 si aucun a faire.
//
......@@ -574,10 +579,4 @@ function my_strtotime($la_date) {
return false;
}
// http://doc.spip.org/@cron_syndic
function cron_syndic($t) {
return executer_une_syndication();
}
?>
......@@ -179,7 +179,7 @@ function calculer_visites($t) {
// Calcule les stats en plusieurs etapes
//
// http://doc.spip.org/@cron_visites
function cron_visites($t) {
function cron_visites_dist($t) {
$encore = calculer_visites($t);
// Si ce n'est pas fini on redonne la meme date au fichier .lock
......
......@@ -437,7 +437,7 @@ function essaie_ajouter_liste_plugins($url) {
// http://doc.spip.org/@chercher_enclosures_zip
function chercher_enclosures_zip($rss, $desc = '') {
$liste = array();
include_spip('inc/syndic');
include_spip('cron/syndic');
foreach(analyser_backend($rss) as $item)
if ($item['enclosures']
AND $zips = extraire_balises($item['enclosures'], 'a'))
......
......@@ -206,7 +206,7 @@ function alertes_auteur() {
if (isset($GLOBALS['meta']['message_crash_tables'])
AND autoriser('detruire')) {
include_spip('inc/maintenance');
include_spip('cron/maintenance');
if ($msg = message_crash_tables())
$alertes[] = $msg;
}
......
......@@ -21,7 +21,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
// - les scripts usuels standard sont limites a 30 secondes
// Solution:
// Toute connexion a SPIP s'achevent par un appel a la fonction cron()
// Toute connexion a SPIP s'acheve par un appel a la fonction cron()
// qui appelle la fonction surchargeable inc_cron().
// Sa definition standard ci-dessous prend dans une liste de taches
// la plus prioritaire, leurs dates etant donnees par leur fichier-verrou.
......@@ -50,8 +50,6 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
// Elle doit etre definie dans le fichier homonyme du repertoire "inc/"
// qui est automatiquement lu.
// Une seule tache est executee pour eviter la guillotine des 30 secondes.
// http://doc.spip.org/@inc_cron_dist
function inc_cron_dist($taches = array()) {
......@@ -83,10 +81,9 @@ function inc_cron_dist($taches = array()) {
if ($tache) {
spip_timer('tache');
include_spip("inc/$tache");
$f = 'cron_' . $tache;
$retour = $f($last);
touch($lock);
$cron = charger_fonction($tache, 'cron');
$retour = $cron($last);
// si la tache a eu un effet : log
if ($retour) {
spip_log("cron: $tache (" . spip_timer('tache') . ") $retour");
......@@ -139,16 +136,15 @@ function taches_generales() {
return pipeline('taches_generales_cron',$taches_generales);
}
// Pas de fichier a part pour une fonction aussi petite:
// - elle peut retirer les fichiers perimes
// - elle fait appliquer le quota
// En cas de quota sur le CACHE/, nettoyer les fichiers les plus vieux
// http://doc.spip.org/@cron_invalideur
function cron_invalideur_dist($t) {
// Cas particulier : optimiser est dans base/optimiser, et pas dans inc/
// il faut donc definir la fonction _cron ici.
// http://doc.spip.org/@cron_optimiser
function cron_optimiser($t) {
include_spip('base/optimiser');
optimiser_base();
// relacher le verrour
include_spip('inc/invalideur');
appliquer_quota_cache();
return 1;
}
?>
......@@ -133,16 +133,6 @@ function appliquer_quota_cache() {
}
// Cette fonction fait le menage dans le cache :
// - elle peut retirer les fichiers perimes
// - elle fait appliquer le quota
// http://doc.spip.org/@cron_invalideur
function cron_invalideur($t) {
// En cas de quota sur le CACHE/, nettoyer les fichiers les plus vieux
appliquer_quota_cache();
return 1;
}
//
// Destruction des fichiers caches invalides
//
......
......@@ -398,12 +398,6 @@ function calculer_prochain_postdate($check= false) {
ecrire_metas(); // attention, sert aussi aux appelants
}
// http://doc.spip.org/@cron_rubriques
function cron_rubriques($t) {
calculer_rubriques();
return 1;
}
// creer_rubrique_nommee('truc/machin/chose') va creer
// une rubrique truc, une sous-rubrique machin, et une sous-sous-rubrique
......
......@@ -594,12 +594,14 @@ function action_cron() {
// cron() : execution des taches de fond
// quand il est appele par public.php il n'est pas gourmand;
// quand il est appele par ?action=cron, il est gourmand
// On peut lui passer en 2e arg le tableau de taches attendu par inc_cron()
// Retourne Vrai si un tache a pu etre effectuee
// http://doc.spip.org/@cron
function cron ($gourmand=false) {
function cron ($gourmand=false, $taches= array()) {
// Si base inaccessible, laisser tomber.
if (!spip_connect()) return;
if (!spip_connect()) return false;
// Si on est gourmand, ou si le fichier gourmand n'existe pas
// ou est trop vieux (> 60 sec), on va voir si un cron est necessaire.
......@@ -616,13 +618,15 @@ function cron ($gourmand=false) {
if (spip_touch(_DIR_TMP.'cron.lock', 2)) {
$cron = charger_fonction('cron', 'inc', true);
if ($cron) {
$cron();
$cron($taches);
// redater a la fin du cron
// car il peut prendre plus de 2 secondes.
spip_touch(_DIR_TMP.'cron.lock', 0);
return true;
}
}# else spip_log("busy");
}
return false;
}
......
......@@ -397,4 +397,12 @@ function spip_fetch_array($r, $t=MYSQL_ASSOC) {
if ($r) return mysql_fetch_array($r, $t);
}
// http://doc.spip.org/@envoyer_mail
function envoyer_mail($email, $sujet, $texte, $from = "", $headers = "") {
spip_log('creer_objet_multi() '.$GLOBALS['REQUEST_URI'].' - '.$_SERVER['SCRIPT_NAME'], 'vieilles_defs');
$envoyer_mail = charger_fonction('envoyer_mail','inc');
return $envoyer_mail($email,$sujet,$texte,$from,$headers);
}
?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter