0

私は人々が特定のファイルの処理を要求できるウェブサイトを持っています。処理は私のサーバーで行われ、処理されたファイルはダウンロードできるようになります。Webサイトの管理者が、処理コードが実行されているか、失敗したか、待機しているかなどをWebサイトから確認できるようにしたいと思います。

ですから、ウェブページに「待機中」、「アクティブ」、「失敗」などの行を入れたいと思います。phpを使用することを期待しています。

これが一般的な概要です。特に、これが私のシステムの仕組みです。

•ユーザーが処理ジョブを選択すると、phpを使用してmysqlデータベースに追加されます。

•monitor_database.pyというPythonコードがscreenインスタンスで実行されており、データベースを監視し、データベースに新しいリクエストがあることに気付いたときに適切な処理ジョブを開始します。

•処理が完了すると、データベースが更新されます。

そのため、画面セッションとmonitor_database.pyが実行されているかどうか、monitor_database.pyが処理対象のものを送信したかどうか、または待機しているかどうかをWebページから確認できるようにしたいと思います。

これを達成するための最善の方法について誰か提案がありますか?

4

3 に答える 3

0

これは私が最終的に行った解決策です...

最初に、コードのステータス (待機中、これを実行中、あれを実行中など) を記述する、1 行のみを含む新しい mysql テーブルをデータベースに作成しました。

今、私は自分のページにこのphpコードを持っています:

exec( "ps aux | grep process_name.py | grep -v grep | grep -v emacs", $pids );
// This looks for any processes named 'process_name.py', ignoring those caused by emacs,
// and the one caused by grep itself.
$r_process = @mysqli_query($database, "SELECT status FROM process_status WHERE status_id=1");
// This checks the status of the file in the database.
$Monitor = mysqli_fetch_array($r_process);
$StatusName = $Monitor['status'];
if ( empty($pids) )
    {
    $Status = 'Failed';
    }
else
    {
    $Status = 'Operating';
    }

これで、私の html には、プロセスの進行状況に応じて、「プロセス 1 で失敗しました」または「プロセス 2 で操作中」と表示されるものがあります。ページを変更するには、ページを更新する必要があります。以前の回答では、ページを更新する必要がないようにしたいと考えており、それを回避する方法を提案していたと思いますが、実際には、プロセスが実行されているかどうかを確認する簡単な方法が欲しかっただけです。これexec ( gps... )が鍵でした。

于 2013-05-15T16:28:05.493 に答える
0

これを行う最も一般的な方法は、Ajax 呼び出しを使用することです。たとえば、フライトを検索しているときにステータス画面を表示する旅行サイトの数を確認してください。

これを行う正確な方法はアプリケーションに大きく依存しますが、原則として、「ステータス」ページ (ユーザーがファイルをアップロードするページ) があります。ステータス ページには、30 秒ごとにサーバー上の PHP スクリプトを呼び出す JavaScript が含まれています。次に、PHP スクリプトはデータベースにクエリを実行して現在のファイルのステータスを見つけ、XML または JSON を少し返します。Web ページの JavaScript はその XML または JSON を解釈し、その結果でページを更新します。ここに詳細な説明があります。ここにサンプルコードがあります。

于 2013-01-24T11:26:31.130 に答える
0

IE を採用していない場合は、これに WebSocket を使用できます。

この答えはあなたの質問と同じくらい一般的です;-)

于 2013-01-22T15:36:53.203 に答える