J’utilise le dom pour modifier le flux XML d’un fichier Word au format WordML.
Je récupère alors la chaine de caractères grâce à DOMDocument->saveXML().
Ensuite je fais un echo de cette chaine avec l’entête Word :
header("content-type: application/msword");
header('Content-Disposition: attachment; filename="'.$nom_fichier.'"');
J’obtiens alors après un certain nombre (je ne sais pas combien) de chargement de cette page, l’erreur suivante :
Code : Tout sélectionner
<br />
<b>Warning</b>: DOMDocument::saveXML() [<a href='function.DOMDocument-saveXML'>function.DOMDocument-saveXML</a>]: Memory allocation failed : growing buffer in <b>D:\Intranet_Cal\Applis\Refonte_Intranet\class\WordML.class.php</b> on line <b>397</b><br />
<br />
<b>Warning</b>: DOMDocument::saveXML() [<a href='function.DOMDocument-saveXML'>function.DOMDocument-saveXML</a>]: Memory allocation failed : growing buffer in <b>D:\Intranet_Cal\Applis\Refonte_Intranet\class\WordML.class.php</b> on line <b>397</b><br />
(...)
<br />
<b>Warning</b>: DOMDocument::saveXML() [<a href='function.DOMDocument-saveXML'>function.DOMDocument-saveXML</a>]: Memory allocation failed : growing buffer in <b>D:\Intranet_Cal\Applis\Refonte_Intranet\class\WordML.class.php</b> on line <b>397</b><br />Or mon flux fait bien moin de 8M.
Maximum allowed size for uploaded files.
upload_max_filesize = 2M
Si j’utilise ini_set ( string $varname , string $newvalue ) pour changer la valeur de memory_limit, cela ne change rien. J’ai toujours l’erreur.
Si je redémarre le serveur apache je n’ai plus l’erreur. Elle revient toujours après un certain nombre de chargement de la page. Tant que je n’ai relancé le serveur, j’ai constamment l’erreur.
Si je crée un fichier avec DOMDocument ->save(chemin_fichier), je lis son contenu et le supprime, je n’ai pas de problème de buffer.
En soit, ça ne m’embête pas de faire de cette façon. Mais j’aimerai comprendre pourquoi j’ai un soucis de buffer avec DOMDocument->saveXML().
Est ce que quelqu’un à déjà rencontrer le problème ? A quoi est ce due ? Ai-je oublié une instruction qui me permettrait de vider une mémoire ?
Ne laissez une pauvre informaticienne être toujours aussi bête ce soir en couchant
Merci d’avance à tous.