###前提・実現したいこと
MacOS上でCakePHP3を使用し、アプリケーションを作成中なのですが、
あるページに遷移した際、シェルコマンドを実行し、
その実行結果を随時ブラウザに表示するという処理を行いたいのですがうまくいきません。
###発生している問題・エラーメッセージ
現状の問題としては、先にシェルコマンドの実行と随時echoのメッセージ表示が行われ、
最後にレイアウトが出力される状況です。
理想としては、先にページをレンダーし、
シェルコマンドの実行結果が随時HTML上で更新されるようにしたいと思っています。
ご助言頂戴できれば幸いです。
よろしくお願いします。
###ソースコード
php
1# src/Template/Test/index.ctp 2 3<p>ok</p> 4 5<?php 6 echo '<div id="progress"></div>'; 7 echo str_pad(" ",4096)."<br />\n"; 8 9 $proc = popen($cmd, 'r'); 10 while (!feof($proc)) 11 { 12 # echo '<pre>'. fread($proc, 4096) .'</pre>'; 13 echo "<script>document.getElementById( 'progress' ).appendChild(document.createTextNode('" . str_replace(array("\r", "\n"),"", fread($proc, 4096)) . "'));</script>"; 14 echo "<script>document.getElementById( 'progress' ).appendChild(document.createElement('br'));</script>"; 15 echo str_pad(" ",4096); 16 17 flush(); 18 ob_flush(); 19 sleep(1); 20 } 21?>
php
1# src/Controller/TestController.php 2 3class TestController extends AppController 4{ 5 6 public function index() 7 { 8 $cmd = <<< EOF 9echo ディレクトリを作成中; 10cd ~/Documents/develop; 11mkdir ~/Documents/develop/test; 12echo ディレクトリ作成完了; 13EOF; 14 15 $this->set(compact( 16 "cmd" 17 )); 18 } 19}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/15 01:26