2

プロジェクトのビルド プロセスには複雑なタスクが含まれており、時間がかかります。コマンドラインを実行する場合Phing、エンドユーザーがビルドについて何が起こっているかについて、ブラウザーにリアルタイム情報を表示するようにします (ステップバイステップ)。

を使用exec()するとプロセスが実行され、出力が出力されますが、そのような動作は望ましくありません。

データを段階的にキャプチャする方法はありますか?

4

1 に答える 1

1

Phing リアルタイムでブラウザに出力

Phing output/status linesブラウザにリアルタイムで直接送信したい。Phing 出力からブラウザにステータスを非同期的に送信するには、次のサンプル コードを使用できます。

1) pipe.phpPhing + System("...") CMDの使用例

以下は、phpsystem()phingコマンドラインを組み合わせた使用例です。

<?php system("phing -args... | ./pipe.php"); ?>

2) ブラウザでの Phing 出力の受信

次の URL にアクセスして、出力を受け取ります。

コンソール: http://www.pubnub.com/console?channel=phing-out

3) Phing-to-Browser CMD ライン パイプの例 (pipe.php) の送信

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 ファイルで出力を受け取る (ブラウザ)

独自の 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>
于 2013-07-08T21:30:07.813 に答える