标签: output-buffering

使用include/require_once将内容分配给变量

是否可以这样做

$var = require_once('lol.php');
Run Code Online (Sandbox Code Playgroud)

所以任何HTML输出lol.php都会进入内部$var

我知道输出缓冲,但有一些特殊的内置函数已经做到了吗?

html php variables output-buffering

11
推荐指数
2
解决办法
8741
查看次数

ob_flush需要很长时间才能执行

在我的网站(使用drupal运行)中,该ob_flush函数需要很长时间(在10到100秒之间)才能执行.我如何找出原因?什么能导致这么长时间? 在此输入图像描述

php performance output-buffering drupal-7

10
推荐指数
1
解决办法
813
查看次数

在PHP中,有没有办法在不使用输出缓冲的情况下将PHP文件的输出捕获到变量中?

在PHP中,我想将文件读入变量并同时处理文件中的PHP而不使用输出缓冲.这可能吗?

基本上我希望能够在不使用的情况下完成此任务ob_start():

<?php
ob_start();
include 'myfile.php';
$xhtml = ob_get_clean();
?>
Run Code Online (Sandbox Code Playgroud)

这可能在PHP?

更新:我想在输出回调中做一些更复杂的事情(不允许输出缓冲).

php eval output-buffering

9
推荐指数
3
解决办法
1万
查看次数

PHP Flush/ob_flush无效

我已经尝试了几次尝试让我的flush和ob_flush工作.我已经尝试设置ini以允许缓冲,我尝试使用我在网上找到的几个不同的功能来进行输出缓冲,而且根本没有任何功能正常工作.该脚本希望等到它完成后直到它回显输出.这是我到目前为止的脚本

 ob_start();

 //Login User
 echo 'Logging in to user<br>';
       ob_flush();
       flush();
      $ch = curl_init("http://www.mysite.com/login/");
      curl_setopt($ch, CURLOPT_HEADER, 0);
      curl_setopt($ch, CURLOPT_POST, 1);
      curl_setopt($ch, CURLOPT_POSTFIELDS, "username=$user&pass=$pass");
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
      curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies/$cookie");
      curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies/$cookie");
      $output = curl_exec($ch);
      curl_close($ch);
      ob_flush();
      flush();

       //Update Status
 echo 'Updating Status<br>';
       ob_flush();
       flush();
      $ch = curl_init("http://www.mysite.com/update/");
      curl_setopt($ch, CURLOPT_HEADER, 0);
      curl_setopt($ch, CURLOPT_POST, 1);
      curl_setopt($ch, CURLOPT_POSTFIELDS, "status=$status");
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
      curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies/$cookie");
      curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies/$cookie");
      $output = curl_exec($ch);
      curl_close($ch);
      ob_flush();
      flush();
Run Code Online (Sandbox Code Playgroud)

我希望它回应它正在做的事情,然后运行该函数,然后回显其他东西,然后做另一个函数.我希望在浏览器上实时刷新和回显所有缓冲区.

php buffer output-buffering

9
推荐指数
3
解决办法
3万
查看次数

"已发送标头"在PHPUnit测试期间返回错误

我正在使用PHPUnit测试一套REST Web服务.我们正在使用输出缓冲来对响应进行gzip编码.当我使用PHPUnit运行服务测试时,我收到错误:

Cannot modify header information - headers already sent by (output started at /home/dotcloud/php-env/share/php/PHPUnit/Util/Printer.php:172)
Run Code Online (Sandbox Code Playgroud)

它抱怨我的代码echo是浏览器的输出...

通过ob_start()在测试类的顶部添加一个调用,我能够暂时解决这个问题,但是当我一次运行多个测试时,我再次收到此错误.

有任何想法吗?

phpunit output-buffering

9
推荐指数
1
解决办法
7319
查看次数

不能在输出缓冲显示处理程序中使用输出缓冲

我重新安装了Apache,并从PHP 5.3切换到5.6.一切正常,但我得到这个错误,当调用ob_start():

Cannot use output buffering in output buffering display handlers
Run Code Online (Sandbox Code Playgroud)

我试图在PHP中启用输出缓冲,但我仍然收到此错误:

output_buffering = 4096
Run Code Online (Sandbox Code Playgroud)

php apache output-buffering ob-start

9
推荐指数
3
解决办法
1万
查看次数

PHP输出缓冲

在PHP脚本或使用和htaccess文件中打开输出缓冲的方法有哪些?

我在我的应用程序的根目录中的htaccess文件中使用以下方法:

php_value output_buffering On
php_value output_handler mb_output_handler
Run Code Online (Sandbox Code Playgroud)

在我的一个共享主机帐户(使用PHP 5.2.x进行Linux托管)中,上面会产生一个空白页面.技术支持说他们无法在php.ini文件中打开它,但我可以在我的脚本中打开它...

ob_start()ob_end_flush()产生相同的结果.我能做什么?

php output-buffering

8
推荐指数
1
解决办法
2万
查看次数

die()会执行ob_end_flush()吗?

我似乎无法在任何地方找到一个好的答案.如果我正在运行输出缓冲,并且a die()被触发,那么它ob_end_flush()也会启动吗?

php die output-buffering

8
推荐指数
1
解决办法
769
查看次数

无论缓冲区设置如何,PHP命令行输出缓冲区输出

我有一些课程,我正在编写单元测试,其中有回声.我想抑制这个输出并思考ob_start()并且ob_clean()就足够了,但它们没有效果.

public function testSomething (){
    ob_start();
    $class = new MyClass();
    $class->method();
    ob_clean();
}
Run Code Online (Sandbox Code Playgroud)

我也试着变体,如ob_start(false, 0, true);ob_end_clean()无济于事.

我错过了什么?

php output-buffering

8
推荐指数
1
解决办法
3894
查看次数

如何使用PHP和Smarty同时获取数据并在浏览器中显示?

我在我的网站上使用PHP,MySQL,Smarty,jQuery,AJAX等.目前,我从MySQL数据库中获取大量数据(匹配问题ID),对其进行处理,将此数据分配给Smarty模板并将其打印在网页上.由于要获取的数据量太大而且正在进行进一步处理,因此获取最终输出数据需要花费太多时间.反过来,向用户显示整个数据需要花费太多时间.

我有一种方法,但无法实现它.我的方法是运行获取单个匹配question_id并同时将其显示到浏览器的两个过程,并重复此循环,直到获取并显示所有匹配的问题ID.当显示单行的加载数据时,加载器图像应显示在该显示的记录下.当所有数据都被打印出来时,加载器图像应该消失.

但我面临的主要问题是我应该如何继续将数据分配给Smarty模板并显示模板,因为Smarty模板引擎首先加载所有内容,并且只有在完全拥有将其打印到浏览器的内容之后.

为了您的参考,我将控制器,模型和视图中的所有现有代码放在下面:

Controller(match_question.php)的PHP代码如下:

<?php 
  require_once("../../includes/application-header.php");

  $objQuestionMatch  = new QuestionMatch();

  $request = empty( $_GET ) ? $_POST : $_GET ;


  if($request['subject_id']!="") 
    $subject_id = $request['subject_id'];
  if($request['topic_id']!="") 
    $topic_id = $request['topic_id'];

  if($subject_id !='' && $topic_id !='')
    $all_match_questions = $objQuestionMatch->GetSimilarQuestionsBySubjectIdTopicId($subject_id, $topic_id);

  $smarty->assign('all_match_questions', $all_match_questions);
  $smarty->display("match-question.tpl")
?>
Run Code Online (Sandbox Code Playgroud)

Model(QuestionMatch.php)的PHP代码如下:

<?php
  class QuestionMatch {

    var $mError = "";
    var $mCheck;
    var $mDb;
    var $mValidator;
    var $mTopicId;
    var $mTableName;

    function __construct() {
      global $gDb;
      global $gFormValidation;

      $this->mDb        = $gDb; 
      $this->mValidator = $gFormValidation;
      $this->mTableName = …
Run Code Online (Sandbox Code Playgroud)

php mysql ajax smarty output-buffering

8
推荐指数
5
解决办法
3099
查看次数