Anomalie #320
ferméLe cron Drupal génère un pdf
0%
Description
Drupal nécessite le lancement régulier d'un cron job qui se charge
d'opération de maintenance et vérification.
Le tableau de bord Drupal (admin/reports/status)
indique "Tâches de maintenance cron Dernière exécution il y a 9 semaines 11 heures
Cron n'a pas été lancé récemment. Pour plus d'informations reportez-vous
à l'entrée sur la configuration du Cron du manuel en ligne. Vous pouvez
lancer le cron manuellement".
J'ai essayé d'exécuter le cron directement sur le vserveur. Et j'ai un
résultat étonnant. Le cron génère en fait un pdf de prélèvement
automatique.
Mis à jour par Frédéric Couchet il y a presque 14 ans
Commentaire de Benjamin sur siteweb@:
Il doit d'une manière ou d'une autre afficher le contenu de pages (par
exemple pour l'indexation). Or, la génération de PDF se passe de la
manière suivante : on affiche un PDF et on fait un exit(), pour empêcher
l'affichage de la page drupal (sinon, on aurait du PDF dans une page
HTML drupalisée). Du coup, le cron contient un PDF ...
Mis à jour par Frédéric Couchet il y a presque 14 ans
Commentaire de theocrite sur siteweb@
Le bug vient de l'appel du cron sur le module search.
Je n'ai pas eu le temps de trouver la cause du problème, mais j'ai pu
le lancer à la main en ajoutant la ligne
if ($module = 'search') return FALSE;
après la ligne
foreach (module_implements($hook) as $module) {
dans la fonction module_invoke_all du fichier includes/module.inc
Mis à jour par Anonyme il y a presque 14 ans
My 2 cents,
La génération d'un PDF via du code PDF embarquée dans un node relève du hack. Comme expliqué, le node est "rendu" pour être indexé par le module de recherche lors du cron Drupal. Ce qui pose un problème puisque le code de génération du PDF est conçu comme si tout "rendu" du node qui le contient est une "page view" depuis un navigateur. Ce qui n'est pas le cas dans Drupal.
Le problème de fond est que la page de génération de PDF ne devrait pas être dans node mais dans du code propre dans un module.
Il est très simple de remplacer le hack par du code, il suffit d'avoir dans un module
function MODULE_hook_menu() {
$items = array();
$items['chemin/du/generateur/de/pdf'] = array(
'title' => 'PDF',
'page callback' => 'MODULE_generate_pdf',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
return $items;
}
function MODULE_generate_pdf() {
//Le code de génération du PDF
}
cf. http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hook_menu/6
Une autre solution serait de détecter, d'une manière ou d'une autre, si le code de génération de PDF dans le node est exécuté dans le cadre d'un cron. Et dans ce cas, ne pas générer le PDF.
La modification proposée par Fred désactive tous un tas de fonctionnalités du module search dont celle d'indexer le contenu des nodes pour la recherche.
Mis à jour par Pierre Buyle il y a presque 14 ans
J'ai oublié de me logguer pour donner mes 2 centimes (d'euro)...
Mis à jour par Frédéric Couchet il y a environ 7 ans
- Description mis à jour (diff)
- Statut changé de Nouveau à Fermé