问题标签 [ob-start]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
789 浏览

php - 如何在执行 php 脚本之前将标头发送到客户端

如何在执行 php 脚本之前将标头发送到客户端?

我的脚本需要很长时间才能完成,而客户在此期间没有收到任何东西。

0 投票
1 回答
2205 浏览

php - PHP代码的ob_start问题

好的,我无法掌握这个 ob_start 和 ob_end_clean 代码......

基本上,我试图在页面部分中输出 PHP 代码。

这是我的源代码:

现在,在模板函数中,我使用这个:

那么为什么我会收到此错误消息?

HTTP 错误 500(内部服务器错误):服务器尝试完成请求时遇到了意外情况。

我在这里做错了什么?$context['page_data']['body'] 有有效的 PHP 代码,很简单,echo 'Hello World';但它给了我这个 500 Internal Server Error。为什么?

0 投票
1 回答
4117 浏览

php - PHP ob_start 调用了两次,现在无法正确刷新

我已经编写了一个 MVC 框架,并且我正在使用 ob_start('error_handler') 来捕获致命错误。这很好用!

在 boot.php 中

错误记录功能:

同样,这可以很好地处理所有错误!我不使用任何刷新或错误类中的任何东西。

现在,我有一个使用 ob_start 的控制器,因为它是某个方法的相当长的运行时间,我希望向用户反馈正在发生的事情以及脚本的作用。我为此使用 ob_flush() 。

但是,在实现了这个 ob_start('error_logging'); ob_flush 似乎不起作用。他们等到整个脚本完成(大约需要 8 分钟)。

为什么?

我如何冲洗的一个例子是这样的:在控制器方法中:

在登录::执行:

每个 $this->debug->log() 调用都会刷新输出,如下所示:

知道为什么它不能正确冲洗吗?如果您需要查看更多代码,请告诉我,我会提供!

谢谢

::::::::解决方案::::::::::

我必须保存第一个缓冲区(error_logging),结束它,开始新的,做我的事情然后结束那个,再次启动第一个缓冲区并回显保存的输出。

为它上了一堂课:

用法:

引导.php

登录::执行():

完美运行!不支持多个嵌套的 ob_start,因为它只保存 1 个先前的输出。虽然可以修复,但现在不是必需的!

0 投票
2 回答
1345 浏览

php - ob_start() 正在打印输出而不结束 ob_get_flush()

在下面的代码中我做错了什么吗?

Ob_start 应该正确缓冲输出,并且在刷新之前它不应该打印它。但它正在这样做

我得到输出“我很好”

0 投票
3 回答
1948 浏览

php - 在没有 ob_start 的情况下输出后设置 cookie

我猜不是,但是有没有办法在 PHP 中设置一个 cookie 而不必放在ob_start()输出的开头?

我的问题是,我正在开发一个类,其中需要设置一个 cookie。现在我不能告诉使用它的人“你必须在进行任何输出之前创建一个类的新实例”,因为那会很蹩脚。所以我能以某种方式把它拉下来吗?

0 投票
1 回答
708 浏览

php - 如何在 PHP 上实时重定向控制台输出?

如何在 PHP 上实时重定向控制台输出?

当我使用 ob_start() 函数时,它将输出存储在缓冲区中,并调用 ob_end_flush() 存储的输出。

但是..我想实时重定向输出..

请帮我

0 投票
1 回答
3202 浏览

excel - codeigniter 导出到 excel 在本地主机上运行良好,服务器上出现错误

这是我的 export_to_excel 助手的代码:

我在本地主机和服务器上得到不同的结果。当我在 localhost 中运行代码时,它会毫无问题地输出正确的结果,但是当我在服务器上运行代码时,它会给出与 localhost 中相同的结果,但它会添加两行(excel 行),其中包含如下错误:

有什么解决办法吗?

这几乎是一个大型项目,这是我在本地和服务器之间看到的唯一区别。

0 投票
2 回答
1646 浏览

php - ob_start 和 ob_gzhandler 函数的真正作用是什么

我知道 ob_start 打开输出缓冲,但我不完全理解它的含义。对我来说,这意味着它只是停止输出脚本数据。

这是真的?这种情况下浏览器是怎么输出数据的,到底要不要用ob_end_flush()关掉呢?

既然 ob_gzhandler 会压缩网页,那么浏览器是如何处理这些网页的呢?

我在代码中看到过 ob_start("gzhandler") ,因为 ob_gzhandler 压缩网页,所以 ob_start("gzhandler") 是什么意思,它是如何应用于这两个函数的?

所有帮助表示赞赏!

0 投票
3 回答
3161 浏览

php - 是否可以在 ob_start 缓冲区中使用 php 标签?

我正在尝试制作复杂的模板库。问题是我将自己的语法和 php 保存在同一个文件中作为混合。

  1. 首先我的语法被解析并重新格式化。输出通常是 html + php 作为字符串。我不想制作缓存文件,而是使用包含“中间”模板的字符串。

  2. 在这个模板(包含 php 标签和 html 的字符串)上应该执行 php 操作。

MyComplexTemplate(我的语法 + php) =parse=> 模板(HTML+PHP) =exec php=> 结果(HTML)

对于 2. 我正在尝试将 ob_start() 与 echo 一起使用,但 php 标签内的所有内容都消失了。

例如:

结果应该是“<div>123</div>”。目前我只得到 div 标签。

这只是一个简单的例子。我的模板将包含 php 标签内的所有类型的 php 操作。

这种操作是否可能以某种方式进行?

更新

模板即:(template.php)

使用 MySyntaxParser 解析模板并在此之后执行 php,保持不变:

更新

我想像这里一样实现最精确的东西,但 require_once 应该以某种方式来自字符串:

解决方案

实际上解决方案在这个主题PHP: Equivalent of include using eval中。eval 必须与带有 php 标签的 pre 和 postpadded 一起使用。

你也应该看看这篇博文。

像这儿:

0 投票
3 回答
1413 浏览

php - PHP ob_start vs opcode APC,解释差异和现实世界的用法?

前提:我不是想重新发明轮子,我只是想理解。

输出缓存可以很容易地实现:

在另一篇文章另一个答案中解释得很好。

但随后出现了 APC (默认情况下将包含在 PHP6 中)。

  1. APC 是一个模块,一旦安装在服务器上,现有的PHP 代码无需修改就能运行得更快?

    APC 是自动的吗?

  2. 那么,为什么会有这样的功能apc_add呢?

    我们如何使用 APC 缓存整个页面?

  3. 安装 APC 后,我还需要做任何缓存吗?

  4. 如果 APC 要为托管服务提供商节省资金,他们为什么不安装它?(我的意思是他们应该竞相安装它,但我不认为会发生这种情况。)

    安装 APC 是否对这些托管服务提供商不利?