问题标签 [output-buffering]
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.
php - 奇怪的 ob_start() 行为 - 双输出
ob_start() 似乎没有停止任何输出,所以当我刷新缓冲区时它会加倍
输出
但我期待
有任何想法吗 ?
谢谢
ruby - 关于在 ERB 中使用方法“print”等进行元编程
我通过控制台使用 ERB 进行元编程(用于数学软件)。例如,我有文件test.erb
包含
当我解析它时$ erb test.erb
,我得到以下输出
我对此并不感到惊讶,但想知道是否有一种很好的方法可以捕获print
方法的输出并将其放在 ERB 模板中调用它的地方?
想象一下,我有一个复杂的结构,我宁愿打印而不是在内部的字符串中收集输出<%= %>
。
更新
只是为了说明Brian的答案:
解析文件$ erb test.erb
:
php - PHP输出缓冲到文本文件
我在更新脚本时遇到问题。它运行了几个小时,所以我希望它实时输出到文本文件。
我开始文件
然后在while循环中(因为它遍历数据库的记录)我有这个
最后是 logit 函数
但是日志文件仍然是空的。我究竟做错了什么?
php - 不存在会话时,ob_gzhandler 返回空白页
我想压缩我的页面,所以我把
在我的 php 头文件的开头。但是,当我在玩耍时,我注意到如果我在 ob_gzhandler 没有被使用的情况下开始会话,它会给我一个空白页!所以我做了以下事情并且它起作用了:
我如何不确定这是否会一直使用压缩,因为我想象它们可能是一个会话,但浏览器仍然会收到未压缩的数据!我想如果发生这种情况除了开发时间之外真的不应该发生,我将不得不重新启动会话。但我想我真正想知道的是一些关于 zlib 和这种压缩的快速提示。有什么性能提示吗?如果文件末尾没有指示,我假设服务器输出内部缓冲区,但我应该放一个吗?ob_end_flushob_end_clean?ob_end_close?
关于使用 memcache 的任何注意事项?任何提示和信息将不胜感激!
php - 输出缓冲时,包含的 PHP 脚本无法访问 $_POST?
我有一个 HTML 表单发布到以下 index.php:
在 file.php 中,我试图访问 $_POST:
但是 var_dump($_POST) 返回一个空数组。
将 ob 函数移动到 index.php 没有任何效果。
如果我将 var_dump($_POST) 放在ob_start()之前,或者如果我完全删除输出缓冲,问题就会消失,但我需要输出缓冲。因此,为了解决问题,我尝试将表单数据发布到 test.php:
它显示一切正常。所以我的 file.php 的问题似乎是它既包含在内,又使用输出缓冲。你看到我的设置有问题吗?为什么 $_POST 不能被包含的输出缓冲脚本访问?您是否看到解决此问题的方法或替代方法?谢谢。
编辑:另一个可能的因素:我的 HTML 表单标签是这样的:
我使用 mod_rewrite 将其重定向到 index.php。我尝试了 action="/index.php" 并没有任何变化,所以没关系。
powershell - Powershell:如何捕获主机的输出
我正在使用 powershell 自动执行一些与 TFS 中的签出/合并相关的任务。当我打电话
我得到一堆关于要签出的文件的数据。此命令生成的最后一行(假设它成功)是告诉签入号的行。我想将其解析出来,以便稍后在我的脚本中使用。
我知道我可以做类似的事情
但随后输出被完全抑制,我希望该命令的输出实时滚动。我基本上想抓取刚刚发送到输出缓冲区的所有内容。
php - 具有外部类依赖项的嵌套输出缓冲 [请帮助]
提前感谢您的任何建议。
我有一个文件(内容文件),其中创建了一个数组,如下所示:
这反过来又被所谓的“模板系统”拾取,并以页面(和该数组)作为参数(非常标准)呈现布局。
然后模板系统使用该数组生成一个新对象,如下所示:
那么,由于本例中插件的名称是 BannerRotate,所以对象是 $BannerRotate(变量变量)。我这样做是为了每页可以有多个插件对象。然后使用该对象使用成员函数 $BannerRotate->getJS() 调用 jQuery 插件。这些成员函数调用位于模板系统内(重要)。
如果我在与初始数组 [OUTSIDE THE TEMPLATING SYSTEM] (我为首先创建对象而缓冲的文件)相同的文件中调用成员函数,那么一切都会消失。这对我来说没有意义,因为如果我使用 var_dump($BannerRotate),我会得到一个完整的对象。但是,假设在该内容文件中我执行 $BannerRotate->printNoscript(),一切都消失了,并且永远不会创建对象。然后我得到一个致命错误,我正在调用非对象的成员函数。那就是问题所在。
这是我在模板系统中为缓冲内容文件(并创建对象)所做的工作:
有谁知道为什么我可以访问该对象,除非我在同一个文件中调用其成员函数之一?
我能做些什么?
PS我知道设置并不理想。我对此无能为力。
谢谢!
TL; DR我正在文件 A 中创建一个对象,其中包含来自文件 B 的变量。我缓冲文件 B 以获取要馈送到文件 A 的参数,创建对象,将其打印到另一个缓冲区并将文件 B 包含在该缓冲区中也是。如果文件 B 对可能创建的对象进行了函数调用,我会收到一个致命错误:调用非对象的成员函数。
补充笔记:
文件 B:
档案一:
php - ob_get_level() 从级别 1 开始
输出缓冲有一些问题。主要是,我正在尝试使用 ob_gzhandler 回调运行输出缓冲,但它一直告诉我它使用了不受支持的压缩类型。一切都已启用,我认为问题是在脚本开头运行 ob_get_level() 会产生级别 1。php.ini 将我的 output_buffering 设置为 4096。
如果我运行类似:
然后我可以使用 ob_gzhandler 回调成功运行 ob_start() 。但我想知道这是否应该是一个问题。在我的脚本中,我在不同点调用 ob_clean(),因为我避免堆叠太多缓冲区,因为我读过这可以提高性能。我只是不确定我应该在这里做什么。
干杯。
php - PHP:在睡眠()之前和之后输出数据?
这纯粹是为了更多地了解输出缓冲,仅此而已。我想做的是向浏览器回显一个字符串,休眠 10 秒,然后回显其他内容。通常浏览器会等待整整 10 秒,然后发布整个结果,我将如何停止呢?一个例子:
php - 您在使用 eval 的 PHP 中这个非常基本的模板引擎中发现了哪些问题?
多年来,我一直在使用自己的 PHP 模板引擎,这并不是我多年前在教程中看到的“我自己的”。但是,我已经重构了大部分代码,使其更简单、更易于使用。没有它,我很少制作 PHP 项目。
它非常基础,该类只有 3 个方法,加载、分配和渲染。加载模板文件(通常是 HTML)并将其load
保存为字符串变量。assign
允许将 HTML 中的引用分配给{reference}
. 渲染器解析模板文件并用变量替换引用。基本上就是这样。非常基本,非常简单,对我来说可以节省时间。
我喜欢这个模板引擎,因为我讨厌将 PHP 与 HTML 等混合使用。所以我不太喜欢 PHP 本身作为模板引擎(如 WordPress 模板),尽管对于这样的东西非常强大。我不喜欢将我的文件保存为 .php 文件然后用一堆混合 PHP 代码包含/要求它们的想法,我喜欢保持简单。
然而,这个模板引擎很简陋,它不允许条件和循环,这是有时需要的两个非常重要的东西。到目前为止,我一直在通过分离模板文件来解决这个问题,然后在控制器中执行所有条件/循环。例如,我有一个主模板文件,其中有一个<ul>
项目来自数据库的列表,我将只有一个单独的模板文件,其中包含该<li>
项目的一行代码。在控制器中执行循环并<li>'s
根据需要渲染尽可能多的内容。
这是一个介绍,所以你明白我来自哪里。现在到真正的问题...
我一直在思考和试验这种方法的替代方案,并开始在 HTML 模板文件中使用 PHP,并尽可能少地使用代码。例如,像这样:
在控制器中是这样的:
- 我想说的第一点是这对我来说是一个问题。它有点违背了这个模板引擎的目的。我在
echo $val
那儿,打电话给我应该替换的参考。$val
但是,当我有变量等待使用时,在模板渲染中替换引用不是完全愚蠢的吗?但我也不喜欢在我的模板文件中使用大量 PHP 代码的想法,我宁愿尽可能避免,而不会过多地损害整个事情。但是,我看不出我怎么能有一个参考来代替每个循环echo
并将其替换为$val
for 每个循环。你对此有何看法? - 其次,我想听听您的意见以及您认为此解决方案可能存在的 [更多] 问题。或者如果代码中有问题或者如何改进等等......我知道我可以使用额外的方法来完成所有输出缓冲和评估以简化模板渲染,但我正在寻找其他东西我很可能忽略或完全忘记或只是错过了这些知识。
也许我想太多了,也许我应该忘记整件事,像过去几年那样继续这样做。它对我来说效果很好,并简化了我所有的项目。最后,我基本上是在寻找一种方法来简化模板文件中的条件和循环,而不需要额外的模板文件,有些只需要几行简单的代码。