Out of memory avec imap_fetchbody() et 1&1.
Posté : 22 déc. 2012, 21:46
Bonjour à tous,
Je me trouve face à une difficulté que j'ai du mal à comprendre.
Je suis entrain de coder un mini webmail en php et lorsque je fait appel à la fonction imap_fetchbody() sur un mail un peu important (en taille) j'ai l'erreur suivante :
Fatal error: Out of memory (allocated 1572864) (tried to allocate 28041966 bytes) in...
Lorsque que je dis que j'ai du mal à comprendre c'est que 1&1 offre 90Mo de mémoire pour exécuter un script. De plus en local en limitant également à 90Mo cela fonctionne très bien et la fonction memory_get_peak_usage(true) retourne la valeur de 31Mo ce qui est correct.
Je suis un hébergement "premier prix" et je n'ai donc pas accès au php.ini etc...
Cela fait plusieurs mois que je cherche une solution, d'ailleurs si je fait quelque chose dans le gendre :
for($i=0;$i<100000000;$i++) {
$str .= "a";
echo "<br />".memory_get_peak_usage(true);
}
Je monte jusqu'a 50Mo alloué avant d'avoir l'erreur (trie to allocate 49Mo) ce qui est normal puisqu'il recopi toute la chaine de caractère dans une nouvelle chaine plus longue. Donc dans ce cas là j'ai bien les 90Mo utilisables.
Si quelqu'un pouvait m'aider ça serai vraiment sympa.
Un grand merci par avance.
Je me trouve face à une difficulté que j'ai du mal à comprendre.
Je suis entrain de coder un mini webmail en php et lorsque je fait appel à la fonction imap_fetchbody() sur un mail un peu important (en taille) j'ai l'erreur suivante :
Fatal error: Out of memory (allocated 1572864) (tried to allocate 28041966 bytes) in...
Lorsque que je dis que j'ai du mal à comprendre c'est que 1&1 offre 90Mo de mémoire pour exécuter un script. De plus en local en limitant également à 90Mo cela fonctionne très bien et la fonction memory_get_peak_usage(true) retourne la valeur de 31Mo ce qui est correct.
Je suis un hébergement "premier prix" et je n'ai donc pas accès au php.ini etc...
Cela fait plusieurs mois que je cherche une solution, d'ailleurs si je fait quelque chose dans le gendre :
for($i=0;$i<100000000;$i++) {
$str .= "a";
echo "<br />".memory_get_peak_usage(true);
}
Je monte jusqu'a 50Mo alloué avant d'avoir l'erreur (trie to allocate 49Mo) ce qui est normal puisqu'il recopi toute la chaine de caractère dans une nouvelle chaine plus longue. Donc dans ce cas là j'ai bien les 90Mo utilisables.
Si quelqu'un pouvait m'aider ça serai vraiment sympa.
Un grand merci par avance.