Affichage Configuration Historique avec un grand nombre de commandes / memory_limit PHP

Bonjour,

Pour faire suite à ce post :

L’amélioration apportée en 4.2 est flagrante. Avec 6900 comandes, il me faut environ 2min30 en 4.1 pour charger la page alors qu’il me faut 7 secondes en 4.2 (Merci Kiboost :+1:).

En revanche, lorsque l’on dépasse un certain nombre de commandes (j’ai l’impression que la barre se situe aux alentours des 7000 dans mon cas) il est impossible de charger la page et j’obtiens la fameuse erreur : PHP Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 14807040 bytes) in Unknown on line 0, referer: http://X.X.X.X/index.php?v=d&p=history

Ayant environ 8300 commandes sur ma prod (j’ai déjà fait pas mal de ménage), je suis bien ennuyé de ne pas pouvoir ouvrir cette page.

J’ai tenté en modifiant le memory_limit (par défaut à 256M) à 1024M, 2048M et -1 sur ma VM de test (Debian 10 4vCPUs 4Go sur ESXi) mais cela ne résoud pas le problème.

Dois-je comprendre qu’au delà d’un certain nombre de commandes il faut abondonner l’idée d’utliser cette page ce qui serait dommage car c’est là tout son intérêt quand on a beaucoup de commandes ?

Tu devrai pourtant t’en sortir avec le memorylimit.
Tu peut le setter directement dans la modale en 1ère ligne php pour être sûr.

T’a vm a assez de ram ?

Sinon en osdb database avec le nouveau constructeur tu peut t’en sortir.

2min40 a 7sec quand même :flushed::flushed::flushed::flushed:

Un truc que j’avais fait en test et qui fonctionnait.
Après cette ligne : https://github.com/jeedom/core/blob/alpha/desktop/modal/cmd.configureHistory.php#L21

$memory_limit = str_replace(array('G', 'M', 'K'), array('000000000', '000000', '000'), ini_get('memory_limit'));
if (count($cmds) > 2500 && $memory_limit < 256000000) ini_set('memory_limit','256M');

si tu met ini_set('memory_limit','512M'); ?

Pas mieux malheureusement même en le settant directement dans la page avec ce que tu as indiqué. J’ai tenté avec 512M, 2048M et -1.

Pour être sur, j’ai aussi passé la RAM de ma VM à 8G mais cela n’a pas l’air coincer à ce niveau. Je suis à 2,39G Max en utilisation.

c’est peu etre un memorylimit plus global d’apache alors. Pad d’idée là

J’ai modifié la condition car elle ne matchait pas.

if (count($cmds) > 2500 && $memory_limit < 256000000) ini_set('memory_limit','512M');

Avec le <= au lieu de <, ca fonctionne :slight_smile:

if (count($cmds) > 2500 && $memory_limit <= 256000000) ini_set('memory_limit','512M');

Du coup, avec un peu plus de 9000 commandes, 10 secondes pour charger la page et 14s pour que les pages suivantes apparaissent.

ah pas mal, çà reste raisonnable !!!

par contre setter le memory limit sans connaitre la quantité de ram c’est un coup a faire exploser apache non ?

Sinon on pourrait faire des paliers, 0/3000, 3000/6000 à 256 et au dessus à 512 ?

Mais je mesure pas trop le danger de faire çà

@Loic une idée ?

Bonjour,
J’ai fait autrement en le changeant pour tout jeedom (ca sera effectif en 4.2)

Top! çà se fera à l’update depuis une 4.1 du coup ?

oui oui bien sur c’est le htaccess qui decide donc rien a mettre a jour

Bon ben voilà un gros soucis de réglé :+1:t3: :smile:

Je viens de forcer une mise à jour de la 4.2 et je confirme que ca fonctionne.

Merci à tout les deux :+1:

2 « J'aime »

Whaou, ça change tout effectivement !

Génial !!

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.