Communauté Elgg francophone

Créer un compteAide  
Connexion
Aide, trucs et astuces
Le groupe pour poser ses questions et partager ses trucs et astuces sur Elgg

Probleme avec $site->enabled_plugins

Démarré par abFab le 17 février 2011 Réponses (4)

Hier en travaillant sur ma base de test j'ai eu droit une jolie page. J'enlève donc le plugin que j'étais en train de modifier... rien à faire.

Comme je ne comprends pas d'où cela vient, je trace à coup de echo dans le code.

Ca plante dans "engine/lib/plugins.php"...dans la fonction is_plugin_enabled

En fait ça plante à la ligne :

$ENABLED_PLUGINS_CACHE = $enabled_plugins;

Le echo avant marche, le echo après, non...

En fait, je comprend (presque) pourquoi... lorsque je fais afficher le contenu de enabled_plugins

 

echo "<br>in ispluginenabled4<br>";
        $enabled_plugins = $site->enabled_plugins;
print_r($enabled_plugins);

 

Le résultat est.. surprenant :

<br>ispluginenabled4<br>Array
(
[0] => tidypics_lightbox
[1] => profile
[2] => playervideopxrz
[3] => messages
[4] => playervideopxrz
[5] => embed
[6] => riverdashboard
[7] => groups_bookmarkswidget
[8] => embed
[9] => tidypics
[10] => playermp3
[11] => riverdashboard
[12] => playervideopxrz
[13] => custom_index_widgets
[14] => pages
[15] => playermp3
[16] => file
[17] => notifications
[18] => groups_bookmarkswidget
[19] => notifications
[20] => embedvideo
[21] => blogextended
[22] => zmedia
[23] => blog
[...]
[22639] => widgetlinks
[22640] => tinymce
[22641] => externalpages
[22642] => playervideopxrz
[22643] => piwik
[22644] => event_calendar
[22645] => externalpages
[22646] => diagnostics
[22647] => externalpages
)


Oui, cela va jusqu'à 22647 !! ... pour la liste des plugins activés ! Donc oui, je suppose qu'à un moment donné on doit arriver en bout des possibilité de la machine (et qu'en plus ça doit vachement consommer de cpu).


Y'a t'il un moyen de ré-nitialiser cette liste ? (dans phpmyadmin c'est pas du tout, du tout évident...) et surtout, comment faire pour empécher ça ?


Réponses

  • abFab le 17 février 2011

    Hier en travaillant sur ma base de test j'ai eu droit une jolie page. J'enlève donc le plugin que j'étais en train de modifier... rien à faire.

    Comme je ne comprends pas d'où cela vient, je trace à coup de echo dans le code.

    Ca plante dans "engine/lib/plugins.php"...dans la fonction is_plugin_enabled

    En fait ça plante à la ligne :

    $ENABLED_PLUGINS_CACHE = $enabled_plugins;

    Le echo avant marche, le echo après, non...

    En fait, je comprend (presque) pourquoi... lorsque je fais afficher le contenu de enabled_plugins

     

    echo "<br>in ispluginenabled4<br>";
            $enabled_plugins = $site->enabled_plugins;
    print_r($enabled_plugins);

     

    Le résultat est.. surprenant :

    <br>ispluginenabled4<br>Array
    (
    [0] => tidypics_lightbox
    [1] => profile
    [2] => playervideopxrz
    [3] => messages
    [4] => playervideopxrz
    [5] => embed
    [6] => riverdashboard
    [7] => groups_bookmarkswidget
    [8] => embed
    [9] => tidypics
    [10] => playermp3
    [11] => riverdashboard
    [12] => playervideopxrz
    [13] => custom_index_widgets
    [14] => pages
    [15] => playermp3
    [16] => file
    [17] => notifications
    [18] => groups_bookmarkswidget
    [19] => notifications
    [20] => embedvideo
    [21] => blogextended
    [22] => zmedia
    [23] => blog
    [...]
    [22639] => widgetlinks
    [22640] => tinymce
    [22641] => externalpages
    [22642] => playervideopxrz
    [22643] => piwik
    [22644] => event_calendar
    [22645] => externalpages
    [22646] => diagnostics
    [22647] => externalpages
    )


    Oui, cela va jusqu'à 22647 !! ... pour la liste des plugins activés ! Donc oui, je suppose qu'à un moment donné on doit arriver en bout des possibilité de la machine (et qu'en plus ça doit vachement consommer de cpu).


    Y'a t'il un moyen de ré-nitialiser cette liste ? (dans phpmyadmin c'est pas du tout, du tout évident...) et surtout, comment faire pour empécher ça ?


  • abFab le 17 février 2011

    Bon okay...

    http://evanwinslow.com/2010/11/elgg-troubleshooting-allowed-memory-size-of-67108864-bytes-exhausted/

    Visiblement ya un beugue assicié...

    http://trac.elgg.org/ticket/2622

    Et la méthode pour corriger le tir :

    DELETE FROM elgg_metadata WHERE entity_guid=1 AND name_id=3

    Ca désactive tous les plugins, ya plus qu'à retourner dasn l'admin et ré-activer tout ça...
  • Florian DANIEL ~ Facyla le 17 février 2011

    ça m'est arrivé d'avoir des metadata de certains objets en cours de dév. dupliquées.. mais jamais à ce point !

    les cas qui m'ont posé pb étaient typiquement en enregistrant (->save()) des objets sans avoir tous les droits suffisants dessus (crée des doublons de metadata) - par ex. quand on édite un objet en tant qu'admin ou via un rôle qui donne accès en lecture, mais sans qu'on soit owner ni qu'on ait les droits pour éditer le container de l'objet .. enfin des trucs qui arrivent normalement seulement en cours de dév...

    il y a aussi des comportements pas forcément attendus dans le traitement de ces metadata, cf. par ex.

    Note that you cannot "append" values to metadata arrays in this way. For example, the following will not do what it looks like it should do.

    $object->tags[] = "tag four";

    en l'occurrence, il faudrait faire

    $object->tags = array_merge($object->tags, array("tag four"));  // ou toute autre variante dans le même esprit (réécrire la metadata et non pas la compléter)

     

    Au passage, quelqu'un avait mentionné une méthode intéressante pour désactiver les plugins dont je viens de retrouver la référence sur http://community.elgg.org/pg/forum/topic/683572/starting-to-get-discouraged/

    1. Create an empty file at mod/disabled
    2. Disable the offending plugin or plugins through the tools admin. In this case, easy embed or htmlawed.
    3. Delete the mod/disable file.

    l'intérêt est d'éviter de tout désactiver ce qui peut être fastidieux lors de la remise en route..  j'utilise généralement un plugin "vide" (avec un manifest et un start.php quasi-vide mais qui ne fait rien) pour ne désactiver que le plugin concerné

     

    Pour revenir au sujet, est-ce que quelque chose dans le plugin en cours de dév. ne créait pas une boucle qui mène à ce nombre astronomique de plugins activés ?  ça vient bien de quelque part, mais le cas semble assez rare tout de même ?

    Merci pour ces retours intéressants !

     

  • abFab le 17 février 2011

    Je n'ai aucune idée du pourquoi... là j'étais juste en train de modifier le plugin de profil pour ajouter la date de création de chaque profil. Par contre j'avais les caches désactivés (mais je ne sais pas si ça peut jouer...)