Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ob_flush离线工作,而不是在线工作_Php_Flush - Fatal编程技术网

Php ob_flush离线工作,而不是在线工作

Php ob_flush离线工作,而不是在线工作,php,flush,Php,Flush,我试图在上传照片时显示图像,这样用户就知道我的网站正在做一些事情,而不是坐在那里。我可以让它离线正常工作,但由于某些原因不能在线。以下是我代码的相关部分: if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){ echo '<div id="progress"><img src="images/ani_hiker.gif"/> <p align="center">Photo

我试图在上传照片时显示图像,这样用户就知道我的网站正在做一些事情,而不是坐在那里。我可以让它离线正常工作,但由于某些原因不能在线。以下是我代码的相关部分:

if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){
    echo '<div id="progress"><img src="images/ani_hiker.gif"/>
        <p align="center">Photos uploading...<br/>slow and steady!</p></div>';
    ob_end_flush();
    flush();
    ob_flush();
    foreach ($_FILES['files']['name'] as $i => $name) {
          //uploading files junk
    }
    echo '<script language="javascript">
        alert("Photos added successfully!");
        window.location.href="index.php?username='.$profile_link.'&select=photos";
        </script>';
if(isset($\u POST)和$\u服务器['REQUEST\u METHOD']==“POST”){
回声'

照片上传…
缓慢而稳定!

; ob_end_flush(); 冲洗(); ob_flush(); foreach($_FILES['FILES']['name']作为$i=>$name){ //上传文件垃圾 } 回声' 警告(“照片添加成功!”); window.location.href=“index.php?username=”.$profile\u link.&select=photos”; ';
如前所述,它完全可以脱机工作,而不是联机。当我联机尝试时,照片上载和div会在上载完成后显示,而不是在上载过程中显示,并显示在警报框下方。在单击“确定”之前,div内的图像不会显示在警报框中,然后在div消失之前闪烁一秒钟,然后您将进入另一页(如预期的那样)


我觉得这一定是我的服务器的某种设置,但我不知道是什么。我联系了我的主机公司,我们为我的整个站点禁用了输出缓冲,但这并没有解决问题。我已经恢复了输出缓冲,并且它的行为与往常一样。

期望的行为似乎是现在和将来都会是专用于您的本地计算机-

从:

截至2012年8月,所有浏览器似乎都显示“要么全有,要么全无” 换句话说,当php运行时,没有 可以显示内容

特别是,这意味着进一步列出了以下解决方法 下面是无效的:

1) ob_flush(),flush()与其他输出的任意组合 缓冲功能

2) 对php.ini的更改涉及设置输出缓冲区和/或 zlib.u压缩输出为0或关闭

3) 通过 apache_setenv()或通过.htaccess中的条目

因此,在浏览器再次开始显示缓冲内容之前,提示 这里列出的都是没有实际意义的


禁用输出缓冲会使
ob\uuu
函数无法执行任何操作…请看下面的答案:我根本看不出这是如何工作的。当将HTTP文件上载到PHP脚本时,只有在上载本身已完全完成时,才会启动接收脚本,因此尝试以这种方式显示上载进度不应该完全可以工作,而不是“本地”,也不是其他任何地方。如果你想用PHP做类似的事情,那么你必须按照第章所述实现它。“至少,这是个想法”–是的,这是完全错误的。当上传本身完成时,PHP只会启动作为文件上传目标的任何脚本–服务器接收到的所有数据,上传临时文件夹中的临时文件都已创建,等等。“它写在上传图像的循环之外,最重要的是,写在它上面,所以它应该首先发生”–不,这根本不是怎么回事。[…][…]文件没有“上传”在循环内部,它们仅从临时文件夹移动到永久位置;同样,到那时上载本身已经完成。您不能在“之前”输出任何HTML代码这种情况发生,无论是否缓冲,仅仅是因为在上传位完成之前脚本没有启动。输出HTML代码的部分“写在”应该移动文件的部分之上,不会改变一般的底层逻辑一点。这看起来不像是浏览器问题,因为OP说它可以工作“离线”(我假设这意味着在本地web服务器上)。