9
votes

PHP Command Line Sortie Sortie Tampon Sortie indépendamment des paramètres de mémoire tampon

J'ai quelques classes que j'écris des tests d'unité pour lesquels vous en avez fait des échos. Je veux supprimer cette sortie et cette pensée ob_start () code> et ob_clean () code> suffirait, mais ils n'ont pas d'effet.

public function testSomething (){
    ob_start();
    $class = new MyClass();
    $class->method();
    ob_clean();
}


2 commentaires

J'ai le même problème, j'ai essayé ob_implicit_flush (false); et vérifiant le résultat de ob_start () pour voir si cela commence, ce qui est apparemment comme il retourne vrai.


Moi aussi, j'ai le même problème. Essayé la chasse implicite mais pas de dés.


3 Réponses :


2
votes

Vous voudrez peut-être quelque chose comme celui-ci

<?php
public function testSomething (){
    ob_start();
    ob_implicit_flush(false); // turn off implicit flush

// Make your output below
    $class = new MyClass();
    $class->method();
// End of output

// store output into variable:
    $output = ob_get_contents();
}
?>


0 commentaires

0
votes

Avez-vous implicit_flush défini sur True dans votre PHP INI? Cela peut provoquer le comportement que vous voyez car il indique à PHP de dire à la couche de sortie de s'incliner automatiquement après chaque bloc de sortie. Cela équivaut à appeler la fonction PHP Flush () après chaque appel à imprimer () ou à ECHO () et à chaque bloc HTML.


2 commentaires

Il est désactivé à PHP.ini, bien qu'il indique qu'il est codé sur le code de la CLI SAPI. J'ai ajouté ob_implicit_flush (false); en aucun effet.


Je ne suis pas sûr. Peut-être essayez peut-être la définition false avant d'appeler ob_start () si vous ne l'avez pas déjà fait.



0
votes

Ce qui suit résout ce problème pour moi. Sans appeler ob_end_clean (), le contenu du tampon reste jusqu'à la fin du script, où il est rincé. XXX


0 commentaires