プロジェクトのビルド プロセスには複雑なタスクが含まれており、時間がかかります。コマンドラインを実行する場合Phing
、エンドユーザーがビルドについて何が起こっているかについて、ブラウザーにリアルタイム情報を表示するようにします (ステップバイステップ)。
を使用exec()
するとプロセスが実行され、出力が出力されますが、そのような動作は望ましくありません。
データを段階的にキャプチャする方法はありますか?
Phing output/status lines
ブラウザにリアルタイムで直接送信したい。Phing 出力からブラウザにステータスを非同期的に送信するには、次のサンプル コードを使用できます。
pipe.php
Phing + System("...") CMDの使用例以下は、phpsystem()
とphing
コマンドラインを組み合わせた使用例です。
<?php system("phing -args... | ./pipe.php"); ?>
次の URL にアクセスして、出力を受け取ります。
pipe.php
これをファイルにコピーしてchmod +x pipe.php
実行可能にします。 この依存関係もダウンロードしてください: https://github.com/pubnub/php
#!php
<?php
##
## -- pipe.php --
##
## command | ./pipe.php
##
## Create new TCP Session Route (send-to-browser)
require_once('Pubnub.php');
$pubnub = new Pubnub( "demo", "demo", "", false );
## Load STDIN String
$handle = fopen( 'php://stdin', 'r' );
while($phing_out = fgets( $handle, 512 )) {
$phing_out = trim($phing_out);
$pubnub->publish(array(
'channel' => 'phing-out',
'message' => $phing_out
));
}
fclose($handle);
?>
それでおしまい!これは出発点にすぎないことに注意してください。さらに先に進みたい場合は、出力を独自の HTML ファイルに送信する必要がある場合があります。以下の詳細を参照してください。
独自の HTML ファイルで出力を受け取りたい場合は、次の GitHub リポジトリを参照してください: https://github.com/pubnub/javascript
<div id=out></div>
<script src=http://cdn.pubnub.com/pubnub-3.5.3.min.js ></script>
<script>(function(){
// Init
var pubnub = PUBNUB.init({
publish_key : 'demo',
subscribe_key : 'demo'
})
// HTML Display Node (for visual output)
var out = pubnub.$('out')
// TCP Receive
pubnub.subscribe({
channel : "phing-out",
message : function(m){ out.innerHTML += m + "<br>" }
})
})();</script>