J'utilise twitter-async bibliothèque pour interagir avec l'API de Twitter. Cependant, la limite de mémoire continue d'augmenter même si j'utilise gc_enable()
y gc_collect_cycles()
après divers unset()s
Avant d'utiliser le garbage collector, l'utilisation de la mémoire était trop importante. Elle a certes beaucoup diminué. Mais pas de manière satisfaisante.
J'exécute une boucle for qui vérifie les nouvelles demandes dans la base de données et les traite.
Supposons qu'une demande soit traitée, générant environ 98 Mo (c'est bien -- compte tenu de la quantité de données que je récupère à partir de twitter) de mémoire, et qu'il n'y ait plus de demandes à traiter, alors ces 98 Mo de données resteront éternellement jusqu'à ce que php atteigne la limite de mémoire de 260 Mo que j'ai configurée. J'ai déjà configuré monit qui redémarre le script s'il se plante à cause de la limite de mémoire.
Après avoir enquêté un peu, j'ai découvert que la bibliothèque enregistre des données sur les appels échoués, etc. dans certaines variables. Existe-t-il un moyen de détruire l'ensemble de la classe afin de désactiver toutes les variables gourmandes en mémoire et de sauvegarder la mémoire ? Pour l'instant, je ne fais qu'effacer la variable de la classe.
$twitterObj = new EpiTwitter();
// Do all the stuff ..
unset($twitterObj);
Mais il n'y a toujours pas de changement dans l'utilisation de la mémoire.
Au secours !