- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我写了一个小的命令行脚本来处理文档[一个带有 lilypond 乐谱插入的 markdown 文件,只是为了完整起见]。
#!/usr/bin/env php
<?php
$body = "";
...
// text gets processed here and stored in $body
...
ob_start();
include 'template.php';
file_put_contents(
__DIR__ . '/' . str_replace('.md', '.html', $argv[1]),
ob_get_flush()
);
template.php
<!DOCTYPE html>
<html lang="en">
<head>
...
</head>
<body>
<div id="wrapper">
<?php echo Markdown($body); ?>
</div>
</body>
</html>
当我打电话时:
$ ./phlily source.md
文件正确生成,但模板内容也打印到控制台:
GNU LilyPond 2.14.2
Processing `/Users/.../phlily/ly/4add05a74d249f34b3875ef6c3c1d79763927960.ly'
Parsing...
Converting to PNG...
<!DOCTYPE html>
<html lang="en">
<head>
...
</html>
这很烦人,因为我想从 LilyPond 脚本中读取错误和警告,因为它们被埋在终端的 html 墙后面。
长话短说,是否可以在 CLI 环境中关闭输出缓冲区?
最佳答案
我认为您需要 ob_get_clean()
而不是 ob_get_flush()
:
ob_get_clean — Get current buffer contents and delete current output buffer
ob_get_flush — Flush the output buffer, return it as a string and turn off output buffering
在这种情况下,“刷新”意味着“发送到标准输出”。
file_put_contents(
__DIR__ . '/' . str_replace('.md', '.html', $argv[1]),
ob_get_clean()
);
关于php - 从命令行执行脚本时,即使使用 ob_start() 也会将输出打印到终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12133120/
使用 ob_start() 和 ob_start('ob_gzhandler') 有什么区别? 它如何影响页面速度? 最佳答案 这不会像您想象的那样影响页面速度。 ob_gzhandler是一个回调函
我正在做一些关于从 php 最小化 html 的研究。喜欢 class themeing { function render( $file, $folder ) { i
我正在使用以下代码: PHP: // Generate Guid function NewGuid() { $s = strtoupper(uniqid(rand(),true));
session_start(); ob_start(); $hasDB = false; $server = 'localhost'; $user = 'user'; $pass = 'pass';
如何停止调用 ob_start发出时回调 *_clean()电话。 ob_start(function($buffer, $phase){ // code here }, 0, PHP_OUT
我在使用 foreach() 循环循环以及在该循环内部使用 ob_start() 和 ob_get_clean() 时遇到问题。 这是我的功能: protected function renderEm
我在使用 ob_start 时遇到问题。不确定交易是什么,但我已经将其简化为最简单的测试用例......仍然无济于事。我希望此代码将“bar”输出到标准输出,但我什么也没得到,错误日志中也没有错误。
在 PHP 中,有时我会看到这个: $html = Hello world HTML; 通常我会使用 ob_start() : ob_start(); ?> Hello world Hello wor
php 文档建议我应该以 ob_end_flush() 结束每个 ob_start()。我在网站的每个页面上都使用了一个,只是为了让我可以在应用程序的任何地方使用 firephp 日志方法。 该应用程
我是否允许在我的 php 文件中有两个或多个 ob_start(); 如果是的话,结束一个 ob_start(); 并开始另一个的正确方法是什么? 最佳答案 来自手册: Output buffers
在我的网络管理区域中,我使用了非常简单的逻辑: session_start(); ob_start(); if(!isset($_SESSION['user'])){ header("Loca
我复制过来的类(class)出现问题。这不是我的课,但失败的相关部分是: class foo { function process() { ob_start( array( &$this,
我的主页有几个独立的动态部分。这些部分包括公司最近的新闻列表、站点统计面板和某些员工的在线状态。最近的新闻每月更新一次,站点统计数据每天更新一次,在线状态每分钟更新一次。我想缓存这些面板,以便在每次页
我正在使用此 php 代码将 css 文件缓存到中间自己的 CMS 中。 此代码的最大限制是我无法将参数传递给我的“压缩”函数。例如,如果我有一个 css 文件到另一个目录,图像的相对路径不会被替换
通过使用 ob_gzhandler,我们在 linux 下的浏览器(firefox 和 chrome)中得到一个非法字符错误。使用 Windows 一切都很好。 简短说明:我们在一个数组中收集一些 j
所以 ob_start() 应该捕获输出,直到另一个缓冲区函数被调用,如 ob_get_clean(), ob_get_contents(), ob_get_flush()。 但是当缓冲区读取器中抛出
我希望 ob_start() 不让 echo 的输出到它们的正常目的地,而是只记录它们的内容。但它似乎并没有这样做。有任何想法吗?这是我的代码:
我不知道为什么,但这段代码在一个月前对我有用......也许我升级了 php 但不记得了。用 PHP 5.2.17 和 5.3.6 试过这个 为什么不能在 ob_start 函数的回调中使用类对象?
ob_get_contents(); ob_end_clean(); ob_start() 使用ob_start()把输出那同输出到缓冲区,而不是到浏览器。 然后用ob_get_contents得
使用 PHP 的 ob_start($callback),您可以将静态方法作为回调传递,如下所示: class TemplateRenderer { function myCallback($bu
我是一名优秀的程序员,十分优秀!