1

我在这里工作在 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;

现在我的问题如下:

  1. 你会推荐什么,streamcontroller.php从 MVC 中取出?有streamer.php旁边index.php的例子吗?

  2. index.php在的函数中添加检查功能replace_tabs_newlines($content)以检查浏览器是否指向streamcontroller.php并且不执行缩小工作?

  3. 也许有一种方法可以ob_start()在即将输出某些东西时阻止 's 回调被执行?即:在readfile()之前streamcontroller.php

  4. 我会欣赏在这种情况下完全被接受的新想法。

4

1 回答 1

1

ob_end_clean在前面加一个怎么样readfile

于 2013-02-05T07:36:30.210 回答