ここでは、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()
がコンテンツである場合、ブラウザーは最初に圧縮されたコンテンツを認識できないこと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()
何かを出力しようとしているときに のコールバックが実行されるのを止める方法はあるのでしょうか? すなわち:前readfile()
にstreamcontroller.php
?このような状況で非常に受け入れられる新しいアイデアに感謝します。