Projet

Général

Profil

Anomalie #320

Le cron Drupal génère un pdf

Ajouté par Frédéric Couchet il y a plus de 13 ans. Mis à jour il y a plus de 6 ans.

Statut:
Fermé
Priorité:
Normale
Assigné à:
Pierre Buyle
Catégorie:
Migration Drupal 6
Version cible:
-
Début:
03/12/2010
Echéance:
% réalisé:

0%

Temps estimé:

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.

Historique

#1

Mis à jour par Frédéric Couchet il y a plus de 13 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 ...

#2

Mis à jour par Frédéric Couchet il y a plus de 13 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

#3

Mis à jour par Anonyme il y a plus de 13 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.

#4

Mis à jour par Pierre Buyle il y a plus de 13 ans

J'ai oublié de me logguer pour donner mes 2 centimes (d'euro)...

#5

Mis à jour par Frédéric Couchet il y a plus de 6 ans

  • Description mis à jour (diff)
  • Statut changé de Nouveau à Fermé

Formats disponibles : Atom PDF