研究日誌。

大規模なグラフ処理に対してメモリ階層構造を考慮した高性能なソフトウェアを開発。

Online Solver: ソルバ実行その2

2010-04-25 14:06:07 | Weblog
一つ前の記事で、実行の大まかな流れを説明した。

この処理を次の4つのPHPファイルで実現している。
submit.php, execute.php, result.php, download.php


■ submit.php
問題、ソルバ、引数などを選択し、execute.php に渡す。
また、実行フラグ($_POST[])を立てておく。


■ execute.php
1. auto refresh (1sec.毎)
2. 実行フラグ($_POST[])が立っていれば...
- ソルバ実行
- 実行中フラグ($_SESSION[])を立てる

3. 実行フラグ($_POST[])が立っていなければ...
- 実行中フラグ($_SESSION[])が立っていれば、実行中なのでソルバのstdout/stderrを出力する
- 実行中フラグ($_SESSION[])が立っていなければ、実行終了なので、result.phpへ移行

※$_POST[]で取得した実行フラグは明示的に引き継がない限り、auto refresh で消されることがミソ。


■ result.php
実行が終了すれば、こちらに移行してくる。
出力ファイルへのリンクと、実行結果を表示。
ぱっと見では [execute.php] と [result.php] の違いはないので、
ユーザからすると、リンクが増えて auto refresh が止まったように見える。


■ download.php
リンクをクリックすると出力ファイルをダウンロードできる。