非常に簡単に言えば、大規模なプロセス (5 秒から数分) を実行する必要があるプログラムがあり、プロセスの読み込みが完了するまでページを待機させたくありません。
このギアマン ジョブをバックグラウンド プロセスとして実行する必要があることは理解していますが、作業者が実際にプロセスを終了するタイミングに関するリアルタイムのステータス更新を取得するための適切なソリューションを特定するのに苦労しています。PHP の例から次のコード スニペットを使用しました。
do {
sleep(3);
$stat = $gmclient->jobStatus($job_handle);
if (!$stat[0]) // the job is known so it is not done
$done = true;
echo "Running: " . ($stat[1] ? "true" : "false") . ", numerator: " . $stat[2] . ", denomintor: " . $stat[3] . "\n";
} while(!$done);
echo "done!\n";
これは機能しますが、ワーカーがジョブに何をすべきかを伝え終わったときに、クライアントにデータを返すだけのようです。代わりに、文字通りのプロセスがいつ終了したかを知りたいですjob
。
私の実際の例:
- API から複数のデータ フィードを取得します (一部のフィードは他よりも時間がかかります)
- 常に高速にロードするものをいくつかロードし、ワーカー キューに送信されたセクションに「待機中/ロード中」アニメーションを配置します。
- 作業が完了し、結果が完全に取得されたら、アニメーションを結果に置き換えます