Maison >développement back-end >tutoriel php >Compréhension approfondie de la différence entre ob_flush et flush en php
La description de ob_flush/flush dans le manuel est qu'il actualise le tampon de sortie et doit être utilisé conjointement, donc cela confond beaucoup de gens...
En fait, les deux objets d'opération sont différents. Dans certains cas, flush ne fait rien du tout.
la série de fonctions ob_* exploite le tampon de sortie de PHP lui-même
Donc, ob_flush actualise PHP. Son propre tampon.
Et flush, à proprement parler, cela n'a d'effet réel que lorsque PHP est installé en tant que module Apache (gestionnaire ou filtre). Il actualise le tampon du serveur Web (peut être considéré spécifiquement comme Apache). 🎜>
Sous de apache module
, sapi
sera actualisé en appelant le pointeur de fonction membre flush
de sapi_module
, appelant indirectement le flush
de apache
api: ap_rflush
buffer, bien sûr, le manuel indique également qu'il existe d'autres modules d'Apache qui peuvent modifier le résultat de cette action.apache
有些Apache的模块,比如mod_gzip,可能自己进行输出缓存, 这将导致flush()函数产生的结果不会立即被发送到客户端浏览器。 甚至浏览器也会在显示之前,缓存接收到的内容。例如 Netscape 浏览器会在接受到换行或 html 标记的开头之前缓存内容,并且在 接受到 </table> 标记之前,不会显示出整个表格。 一些版本的 Microsoft Internet Explorer 只有当接受到的256个 字节以后才开始显示该页面,所以必须发送一些额外的空格来让这 些浏览器显示页面内容。Donc, l'ordre correct pour utiliser les deux est d'abord ob_flush, puis flush,Bien sûr, sous d'autres sapi, vous ne pouvez pas appeler flush, mais afin d'assurer la portabilité de votre code, il est recommandé de l'utiliser ensemble.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!