Fr:Trucs et astuces:xajax 0.2 et ob gzhandler
Fr:Trucs et astuces:xajax 0.2 et ob gzhandler
[edit] xajax version 0.2 - 0.2.1
Durant le développement de xajax 0.2, les utilisateurs xajax ont découvert que s'ils activaient la bufferisation de sortie PHP et qu'accidentellement ils ajoutaient une ligne vide avant le tag <?php dans leurs scripts, les réponses xml retournées par xajax seraient invalides. Pour éviter ce bug, du code a été ajouté à xajax pour nettoyer le buffer de sortie, juste avant qu'il renvoie la réponse.
C'est seulement après la sortie de xajax 0.2 que les utilisateurs ont découvert que ce code (pour nettoyer le buffer de sortie) pouvait aussi casser la réponse de xajax si la compression PHP gzip or zlib était active :
//ini_set('zlib.output_compression_level', 1); ob_start('ob_gzhandler');
Dans la discussion qui amena au changement, les peurs que le nouveau code puisse causer des conséquences inattendues ont incité à placer ce code (pour nettoyer le buffer de sortie) en option.
Si vous utilisez les versions 0.2 ou 0.2.1 et que vous voulez utiliser la compression PHP avec xajax, vous devez ajouter la ligne suivante après l'instantiation de l'objet xajax :
$xajax->cleanBufferOff();
[edit] xajax 0.2.3
Depuis la version 0.2.3, cette fonctionnalité de nettoyage de buffer est désactivée par défaut, donc les tests et exemples xajax devraient marcher même si la compression PHP est activée dans votre configuration. Si la réponse XML de xajax est invalide sans raison apparente, il est possible que vous ayez un espace blanc en dehors des tags <?php ?> dans un ou plusieurs de vos fichiers sources. La meilleure solution est de les trouver et de les supprimer. Si cela vous est difficile, vous pouvez activer la fonctionnalité pour nettoyer le buffer automatiquement:
$xajax->cleanBufferOn();
N'oubliez pas qu'en activant le nettoyage du buffer, vous ne pourrez pas utiliser la compression.