ホームページ  >  記事  >  バックエンド開発  >  PHPのPopenを使ってRRDTOOL描画の動的出力を実現する_PHPチュートリアル

PHPのPopenを使ってRRDTOOL描画の動的出力を実現する_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:44:551147ブラウズ

RRDTOOL がどのように画像を描画するのかを詳しく調べてみました。構文は確かに面倒ですが、それほど難しいことではありません。コマンドラインから実行する場合は、毎回出力をファイルにする必要があります。 Cacti の実装方法を確認した後、コア部分はコマンドの出力をパイプラインに入れ、ループですべてのデータを読み取ることです。完了後、クライアントに画像として出力します。このようにして、ユーザーは物理的なストレージを必要とせずに動的な画像を表示できます。参考までに、私が抜粋したコード スニペットを以下に示します。

エラー報告(E_ALL);

//グラフ作成コマンド。グラフの後にコネクタが追加されていることに注意してください
$command = '/opt/rrdtool/bin/rrdtool グラフ - --start=-86400 --end=-300 --title=テスト --height=400 --width=800 DEF:value1="/home/echo /workspace/misc/tianjin_dpool_web_21_traffic_in_22.rrd":traffic_in:平均エリア:value1#ff0000 2>&1';

//パイプ文字をテストします
session_write_close();

//パイプライン経由でコマンドを実行し、エラー出力を受け取ります
$handle = Popen("$command 2>&1", 'r');
$read = '';
while (!feof($handle)) {
$read .= fgets($handle, 4096);
}
pclose($handle);
エコー $read;

// キャッシュを許可するために適切なヘッダーを設定します
$this->request->headers['Content-Type'] = File::mime_by_ext('png');
$this->request->headers['Content-Length'] = strlen($read);
$this->request->headers['Last-Modified'] = date('r', time());

from:孤独なブログ

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/478707.html技術記事 RRDTOOL がどのように画像を描画するのかを詳しく調べてみました。構文は確かに面倒ですが、それほど難しいことではありません。コマンドラインから実行する場合は、毎回出力をファイルに変換する必要があります。ぜひご応募ください...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。