La description de ob_flush/flush dans le manuel est qu'ils actualisent tous les deux le tampon de sortie et doivent être utilisés ensemble, cela va donc semer la confusion chez de nombreuses personnes...
En fait, les objets d'opération des deux 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.
Ainsi, ob_flush actualise le tampon de PHP lui-même.
À proprement parler, le flush n'a un effet réel que lorsque PHP est installé en tant que module Apache (gestionnaire ou filtre).
Sous le apache module
de sapi
, flush
appellera indirectement le sapi_module
de flush
pour actualiser le tampon de sortie de apache
en appelant le membre api: ap_rflush
de apache
pointeur de fonction. 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的模块,比如mod_gzip,可能自己进行输出缓存, 这将导致flush()函数产生的结果不会立即被发送到客户端浏览器。 甚至浏览器也会在显示之前,缓存接收到的内容。例如 Netscape 浏览器会在接受到换行或 html 标记的开头之前缓存内容,并且在 接受到 </table> 标记之前,不会显示出整个表格。 一些版本的 Microsoft Internet Explorer 只有当接受到的256个 字节以后才开始显示该页面,所以必须发送一些额外的空格来让这 些浏览器显示页面内容。
Par conséquent, 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!