是否可以这样做
$var = require_once('lol.php');
Run Code Online (Sandbox Code Playgroud)
所以任何HTML输出lol.php
都会进入内部$var
?
我知道输出缓冲,但有一些特殊的内置函数已经做到了吗?
在我的网站(使用drupal运行)中,该ob_flush
函数需要很长时间(在10到100秒之间)才能执行.我如何找出原因?什么能导致这么长时间?
在PHP中,我想将文件读入变量并同时处理文件中的PHP而不使用输出缓冲.这可能吗?
基本上我希望能够在不使用的情况下完成此任务ob_start()
:
<?php
ob_start();
include 'myfile.php';
$xhtml = ob_get_clean();
?>
Run Code Online (Sandbox Code Playgroud)
这可能在PHP?
更新:我想在输出回调中做一些更复杂的事情(不允许输出缓冲).
我已经尝试了几次尝试让我的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)
我希望它回应它正在做的事情,然后运行该函数,然后回显其他东西,然后做另一个函数.我希望在浏览器上实时刷新和回显所有缓冲区.
我正在使用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()
在测试类的顶部添加一个调用,我能够暂时解决这个问题,但是当我一次运行多个测试时,我再次收到此错误.
有任何想法吗?
我重新安装了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脚本或使用和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()
产生相同的结果.我能做什么?
我似乎无法在任何地方找到一个好的答案.如果我正在运行输出缓冲,并且a die()
被触发,那么它ob_end_flush()
也会启动吗?
我有一些课程,我正在编写单元测试,其中有回声.我想抑制这个输出并思考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,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)