我在这里工作在 MVC 模式的情况下。
我有index.php一个基本文件,控制器位于/controllers/目录中。如果你去/stream/xIEjeEJWqs例如/controllers/streamcontroller.php将被执行。
index.php像这样开始,它缩小了即将发送到浏览器的输出:
<?php
function replace_tabs_newlines($content)
{
require_once 'includes/min/lib/Minify/HTML.php';
require_once 'includes/min/lib/Minify/CSS_MODIFIED.php';
require_once 'includes/min/lib/JSMin.php';
$content = Minify_HTML::minify($content, array(
'cssMinifier' => array('Minify_CSS', 'minify'),
'jsMinifier' => array('JSMin', 'minify')
));
return $content;
}
ob_start('replace_tabs_newlines');
ob_implicit_flush(0);
...
所以这段代码会缩小输出的任何内容,如下所示:
<html>
<head>
<title>
Minifies..
</title>
变成<html><head><title>Minifies..</title>
所以,问题是streamcontroller.php 必须输出PNG、MP4 和其他内容,当它readfile()-sa 内容时,浏览器无法识别一index.php开始压缩的内容。
从 streamcontroller.php 中提取:
case "png":
header('Content-type:image/png');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
break;
现在我的问题如下:
你会推荐什么,
streamcontroller.php从 MVC 中取出?有streamer.php旁边index.php的例子吗?index.php在的函数中添加检查功能replace_tabs_newlines($content)以检查浏览器是否指向streamcontroller.php并且不执行缩小工作?也许有一种方法可以
ob_start()在即将输出某些东西时阻止 's 回调被执行?即:在readfile()之前streamcontroller.php?我会欣赏在这种情况下完全被接受的新想法。