0

管理パネルから非常に集中的なジョブを実行するサイトがあります。どういうわけか、それが生成する出力に干渉せずに実行したいと思います。

より明確にするために。フォームを送信する際には、大きな zip ファイルを解凍し、見つけたすべての画像をデータベースに挿入する必要があります。このプロセスには 3 ~ 4 分以上かかります。そこで、ジョブを実行して、ジョブが処理されていることを出力したいと思います。そのときにユーザーに通知できるかどうかはわかりませんが(おそらくajax呼び出しを介して)、気にしません。

出来ますか?

ありがとう

4

1 に答える 1

0

データの処理中にユーザーに何をしてもらいたいかによって異なります。

彼に待ってもらいたいですか?次に、AJAX 呼び出しを使用して、タスクが完了するまで進行状況バー (または好きなもの) を表示します。タスクが完了したら、ユーザーに (再び ajax を介して) 通知し、ストアにある (どんな) 機能でも続行します。

ユーザーが何か他のことをしている間にファイルを処理したい場合は、バックグラウンドで (CakePHP) ShellTask​​ を呼び出して、その魔法を実行させることができます。ユーザーがインポートのステータスを表示できるようにする場合は、すべてのインポートに関する情報を格納するインポート テーブルを作成できます。「ステータス」フィールドを使用することにより、ユーザーは、たとえばタスクがまだ実行中であることを知ることができます。シェル タスクが完了すると、インポートの「ステータス」を変更して、何をしてもかまいません。これはタスク自体で行う必要がありますが、シェル タスクでモデルを使用できるため、シェルでモデルを使用できるのと同じ方法で問題になりません。

これがお役に立てば幸いです。さらに説明が必要な場合はコメントしてください。

于 2012-05-04T10:41:57.073 に答える