スレッド表示 | フラット表示〕 全トピック 920 件中 565 番目 次≫ ≪前

exec()によるタイムアウト

created: 2004-08-31 16:42 | modified: 2004-09-01 17:23 | reply: 1

[1765] exec()によるタイムアウト

user: rei | created: 2004-08-31 16:42
以下のようなプログラムを書いています。
<?php
if(isset($_POST[b1]]){ //b1とb3も同じ
... shell script実行
}
?>

<FORM NAME=f1 METHOD=POST ACTION=$_PHP[SELF]>
<INPUT TYPE=submit NAME=b1 VALUE=step1>
<TEXTAREA NAME=t1>
<!-- b1の実行結果 -->
</TEXTAREA>

<INPUT TYPE=submit NAME=b2 VALUE=step3>
<TEXTAREA NAME=t2>
<!-- b2の実行結果 -->
</TEXTAREA>

<INPUT TYPE=submit NAME=b3 VALUE=step3>
<TEXTAREA NAME=t3>
<!-- b3の実行結果 -->
</TEXTAREA>

ボタンが押されたら、シェルスクリプトが呼ばれて、実行された結果がもとのPHPプログラムにもどり、テキストエリアに表示される。

すぐ終わるプロセスは問題なく動いているが、
大きな計算、例えば3時間ぐらいかかるプロセスはどうも停止しそうな予感がします。

シェルスクリプトが呼び出されたときに、バックグランドで実行し、元のPHPではプログレスバーみたいなものまたは、「実行中・・」を示すメッセージを表示したいですが、やり方は分からないので、ご指摘お願いしたいと思います。

「実行中・・」というメッセージはバックグラウンドの処理が終わるまでずっと出されていて、その終了の判断はどうすればいいでしょうか?
reply: 1768 返信 編集 削除

[1768] frameとJavaScriptで対応

user: シロウ | created: 2004-09-01 17:23
私の場合は<iframe>タグ内に処理系のページを開いて、親のページでJavaScriptで動くバーを用意します。
処理系のページはflush()関数で親のバーを変更するJavaScriptを小出しに表示(実行)する様な事をします。
[Flushテスト]
http://www.rakuto.net/study/htdocs/test/

http://jp2.php.net/manual/ja/function.flush.php


基本的にバックグランドで実行する様な時間の掛かるものは、終了後にメールを送信する様にしています。

時間の掛かる場合、flush()関数は使えないので、JavaScriptなどで定期的に再読み込みするなどでしょうか?
バックグランド処理には、ファイルなどに処理状況を保存するなど、足さなければなりません。

誰かもっと良い案があれば、ぜひご意見をお聞きしたいです。
Parent: 1765  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 565 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑