今回、メール配信など時間の掛かる処理をブラウザより 実行・中止 を行なう管理画面を作成しております。
完成させたい希望の仕様としては、簡単に書くと下記のような物になります。
1.ブラウザより、メール配信のページを作成し、メール配信の実行と中止をボタン操作で行なう。
※実行、中止ボタン操作後に、Ajaxの非同期通信を使いスクリプトを実行させる予定です。
2.配信を実行させた後に、ページを離れ他の作業を行えるようにする。
3.メール配信ページに戻った際に、実行させたメール配信が処理中であればその途中経過を表示する。
作成段階で問題になっているのが
【問題点1】
項目1の、ボタンで実行させるのはわかるのですが、実行中の物を、中止(中断)させる処理がブラウザより
可能なのでしょうか?
また、可能でしたらどのような処理?命令文になるのか教えてください。
いままで、処理の途中で中止させる事を考えたことが無く見当も付きません・・・
【問題点2】
項目2のスクリプトのみ実行させておき、ページを離れても実行させたままにするにはどのような方法が良いのでしょうか?
現在、考えておりますのが、fork関数を使い処理を分ける方法を考えております。
親プロセス(master.cgi)・・・ 処理の受付、実行の完了の応答
子プロセス(slave.cgi) ・・・メール配信、処理の途中経過をログファイルに出力
※ログファイルは、項目3の状況でアクセスした際にログを参照し実行中なら途中経過を表示させるために使いたいと考えております。
スクリプトの構成としては、
親プロセス(master.cgi)の処理
1.処理を受け付け、fork関数を使い子プロセス(slave.cgi)を実行させる。
2.Ajaxへ処理の実行の応答を返す
3.close(STDOUT) して exit;
【問題点3】ここで終了して良いのか?又は、何か待っていなけれなならないのでしょうか?
まったく違っていたら処理の方法を教えてください。
子プロセス(slave.cgi)の処理
1.親プロセスより実行されメール配信処理を行う
2.送信が完了したメールのログを保存
3.全てのメールが送信終わった場合は、完了をログに保存して終了
この様な流れで考えておりますが、今の現時点で3つの問題が発生しております。
問題1 実行させたスクリプトをブラウザ上より中止させることが可能なのか?
可能な場合はどのような処理?命令文になるのかを教えてください。
問題2 スクリプトを実行させたまま、ページを離れるのが可能なのでしょうか?
現在考えている方法で良いのでしょうか?また、違うおすすめの方法がありましたら
教えてください。
問題3 fork関数で処理を行った際に、上記のように終了して良いのでしょうか?
終了してNGな場合は、どのような処理が妥当なのでしょうか?
この様な構成で作成するのは初めてなので、他に問題点が出そうな物がありましたら合わせて
ご回答頂けるとありがたいです。
宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/08 06:52
2018/03/08 07:06
2018/03/08 07:33
2018/03/08 07:33
2018/03/08 07:34