草庐IT

php - 在 ob_start 中使用 print_r

如手册中所述,它不起作用。我试过var_dump它也遇到同样的问题。ob_start()$debugdata=print_r($var,true)这会将结果打印在屏幕上而不是存储到变量中 最佳答案 print_r的第二个参数是$return,它允许输出作为字符串返回而不是输出:$debugData=print_r($var,true);不需要为此使用输出缓冲,实际上也不能使用。您需要在此之前结束输出缓冲,然后在您的print_r调用之后重新启动缓冲:ob_start();//stuff$output=ob_end_clean();$

php - ob_clean 不清理头文件前的输出?

我正面临这个问题。我更改了db.php文件,不幸的是我在php标签前后放置了空格。我在image.php文件中使用了它。我收到了已发送的错误header。我知道这是因为db.php中的空间,但我在image.php中使用了ob_clean。下面是代码。spaceishereandhereimage.php文件包含的代码当我删除db.php中的空格时一切正常。但是我无法理解为什么我的ob_clean不工作。你能解释一下吗。我不想更改db.php文件。因为我有问题。请不要问问题是什么。我想在image.php中完成所有更改以使其工作。请帮忙解决这个问题。 最佳答

php - ob_implicit_flush(), flush(), ob_flush() - 不在远程服务器上工作

如果我从XAMPP上的本地服务器在chrome中加载此脚本:header("Content-Type:text/plain");set_time_limit(0);$max=40;for($i=0;$iround($i/$max*100));echojson_encode($response);ob_flush();flush();sleep(1);}ob_clean();它的工作方式与您预期的一样,页面每秒显示一个新响应。但是,当我将它上传到我的远程服务器(运行相同版本的php)时,它会等到整个脚本完成后再显示输出。对于非常长的脚本,它每30-60秒左右更新一次输出。正如标题所暗示的

php - 为什么调用 ob_flush() 会大大降低我的延迟?

我正在用PHP编写一个应用程序,我决定自己做一些测试以确定PHP处理缓冲区和缓冲的能力。具体来说,我想看看手动调用ob_start()和ob_flush()是否会对我的程序产生巨大影响。我想出了10KB的loremipsum并开始工作。我在PHP中在for循环的开始和结束处放置了一个计时器,该循环写入10KB的lipsum(在display:nonedivblock中)100次,总共1MB的数据,我认为这足以让随机CPU工作负载不会过多地丢弃我的数据。除了PHP计时器,我还打开了Chrome的开发者工具(F12)并记录了“时间”和“延迟”字段。如果我的术语正确的话,“时间”是页面响应和

php - 输出缓冲 ob_get_clean 不工作

我的代码下面的代码可以按我的要求正常工作。它不会在浏览器上发送我真正想要的任何输出。ob_start();echo"test";echo"test";$output=ob_get_clean();但问题出在我下面的代码中。下面的代码开始在浏览器上发送输出,即使我在最后有$output=ob_get_clean();ob_start();for($i=0;$i";}$output=ob_get_clean();我无法理解输出缓冲的概念。每个人都说您可以控制输出并在需要时发送输出,但我上面的脚本开始将输出发送到浏览器。 最佳答案 可以缓

php - 如何在 PHP 中为 ob_start 传递带参数的回调函数?

我一直在关注thistutorial关于缓存功能。我遇到了为ob_start传递回调函数cache_page()的问题。我如何将cache_page()连同两个参数$mid和$path传递给ob_start,行ob_start("cache_page($mid,$path)");当然,上面的方法是行不通的。这是示例代码:$mid=$_GET['mid'];$path="cacheFile";define('CACHE_TIME',12);functioncache_file($p,$m){return"directory/{$p}/{$m}.html";}functioncache_d

PHP ob_start() 问题

我是否允许在我的php文件中有两个或多个ob_start();如果是的话,结束一个ob_start();并开始另一个的正确方法是什么? 最佳答案 来自手册:Outputbuffersarestackable,thatis,youmaycallob_start()whileanotherob_start()isactive.Justmakesurethatyoucallob_end_flush()theappropriatenumberoftimes.Ifmultipleoutputcallbackfunctionsareactive

php - 为什么 ob_start ('ob_gzhandler' ) 破坏了这个网站?

如果存在ob_start('ob_gzhandler'),我有一个网站会在浏览器中抛出内容编码错误。如果我删除语句,它运行正常。该网站与许多其他网站使用相同的框架、服务器和托管包。它们都有效,无论语句是否在其中。该语句位于框架中,而不是应用程序代码中,因此它被所有站点共享。工作站点和非工作站点之间的配置没有区别。网站在本地运行良好,使用完全相同的代码和数据。您可以使用curl/wget获取站点,返回的HTML可以在浏览器中正常呈现。响应头完全一样,没有out语句。我现在删除了远程服务器上的所有代码,并重新上传了所有内容。还是没有变化。下一步是重新安装该站点,并从头开始,但我不想丢失所有

php - ob_start();在 PHP 中?

当使用on_start()时有什么不同吗,//ENABLEGZIPCOMPRESSIONob_start();ob_start('ob_gzhandler');还是这个完全一样,//ENABLEGZIPCOMPRESSIONob_start('ob_gzhandler');我问第一个例子,我的网站似乎加快了一点。谢谢 最佳答案 你应该做:ob_start();或:ob_start('ob_gzhandler');但不是两者。您可以检查$_SERVER['HTTP_ACCEPT_ENCODING']以查看用户代理是否接受gzip编码:

php - 从 ob_clean 更改为 ob_end_clean?

readfile的PHP文档有一个如何下载文件的示例:它使用ob_clean删除可能在输出缓冲区中的内容。但是我读过的帖子(http://heap.tumblr.com/post/119127049/a-note-about-phps-output-buffer-and-readfile)指出对于大文件应该使用ob_end_clean而不是ob_clean。我的问题是:使用ob_clean而不是ob_end_clean有什么用?如果ob_end_clean像ob_clean一样工作并且避免了问题,为什么所有文档都没有显示使用ob_end_clean? 最佳答