• ベストアンサー

時間のかかる処理をレスポンス後にゆっくり行うことって可能?

t140の回答

  • t140
  • ベストアンサー率39% (59/150)
回答No.1

環境がわからないのですが、UNIX系では 別プロセスを立ち上げてこれにバックグラウンド処理を任せれば可能です。

dmq
質問者

お礼

ご回答ありがとうございます。 実装の仕方を詳しく調べてみます。

関連するQ&A

  • socket通信でレスポンスを受け入れないようにするにはどうすればいいですか?

    socket SOCKET,2,1,0; select((select(SOCKET),$|=1)[0]); connect(SOCKET,pack('Sna4x8',2,80,scalar(gethostbyname('www.test.test')); print SOCKET "GET /test.cgi HTTP/1.1\r\n\r\n"; こんな感じでhttp://www.test.test/test.cgiをリクエストしているのですが、結果がわかっているので、レスポンスが必要ありません。 どうもリクエストが終わると<SOCKET>を実行しないでも勝手にレスポンスをサーバから読み込んでいるみたいです。 (なのでリクエストを送った後、ある程度の時間をおいてオフライン状態にしても<SOCKET>からレスポンスを読み取れます) レスポンスの結果は分かっているので読み込みたくないのですが、どうすればいいのでしょうか?

  • CGIで内部処理を待たずにレスポンスを返す方法

    ■質問 CGIで内部処理を待たずにレスポンスを返す方法について教示願います。 (関連サイトを調べていて、近しいものはあったのですが、なかなか今回の問題の原因と対処に結びつく有効な手がかりがない、苦慮しています。) ■詳細 <動作環境>  (1)画面(Java)→(2)Web(Apache)HTTPリクエスト→(3)CGI(C言語)  (3)→(2)を介して(1)へHTTPレスポンスを送信 この環境下で、(3)の中で(3)’処理((2)へのレスポンスとは非同期で 別処理(DBへ登録する処理)言語:cshをCの中からシステムコール。 cshの中でperl処理をキックし、DB更新)を今回追加しました。 (3)’を待たずに(1)へのHTTPレスポンスを返却したいのですが、 サーバログ((1)、(2))をみると、返却のタイムスタンプを見ると、 (3)’が完了した後に返却されているようです。 方式的に(3)の中でfolkを使用し、子プロセス化することで 親は子の処理((3)’)を待たずに(2)にレスポンスを返却可能とみておりましたが、そもそもCGI(C言語)ではできないものなのでしょうか? →C(親処理)の中にデバックを仕掛けたところ、親の終了後に子が動いているように見えています。 ■ソース(概要)※詳細(原本抜粋)が必要な場合は申しつけください。  IF文で定義  (1)forkで子の場合、    execlでcshを実行(cshには親でもらった引数を設定)  (2)親の場合、   デバックログファイルをクローズし、処理終了。 ■補足(その他気になっている点)  ・上記ソースでは、(1)の中では、親で使うログファイル出力   のcloseを行わず、処理終了していますが、問題ないか?  ・同(2)のとき、perlCGIでは、close(stdout);を明示しないと   HTTPレスポンスが返却されない(子の終了を待ってしまう)   旨、サイトの情報に記載がありましたが、C CGIでも同様に   何かしらの明示をしないと、待たされるのか? 以上です。

    • ベストアンサー
    • CGI
  • CGI処理の待ち時間

    こんにちわ^^ えと、処理時間の非常に長いCGIを作ったのですが・・ その処理中に「Now Loading...」って感じに表示させておいて、 処理が終わると、その処理結果を表示させるようにしたいのです。 どうすればよいでしょうか? お願いします

    • ベストアンサー
    • CGI
  • SPeedUpMyPcでレスポンスがダウン

    2008年8月に購入してwindows xpで動いている自宅のpcのレスポンスを改善 させようと思い、表題のソフトをインストールしました。 全体の処理としては、microsoftのuniblue rejistoryとかのソフトを順次インストール しました。 とあるpcではきちんと成果が上がって、納得しているのですが、上記の自宅のpc では、起動時になぜか下記のようなメッセージが出てきます。 「アプリケーションには複数のユーザーセッションのサポートはありません。現在の ユーザーとして実行するにはSPeedUpMyPcを別のユーザーアカウントから閉じる必要 があります」 というメッセージがでてきます。 上記と関連しているのか別な問題なのか、pcでなんらかのソフトが動作中でそのせいで レスポンスが悪くなっているようです。 なにをどうすればいいのか対処方法がわかりません。 どなたかご教示いただければ幸甚です。

  • セッションデータの排他処理

    セッションデータを更新するようなケースで、簡単に排他処理をする方法はないでしょうか。 現在はCGI::Sessionを使っていますが、このfileドライバは、読み込み時にflock⇒開放⇒書き込み時にflock、というように一度開放してしまいます。他の付属ドライバは調べていませんが同じかもしれません。 CGI::Sessionオブジェクトが存在する間はずっとロックしておいて欲しいのです。(と言うより普通に考えればそうであるべきな気がしますが) やはりそのための、たとえばIDごとにわざわざロックファイルを作るとかの処理が必要なのでしょうか。あるいは、ドライバを自分で書くとか。 常套手段的な、それともすでにそういうドライバをご存知でしたら教えてください。 また、セッションデータを更新するなんて珍しくもないと思うんですが、CGI::Sessionが対応してない理由とか、皆さんはどうしているのかも、気になります。

  • 処理時間について

    今、仕事で既存の処理のレスポンス調査をしているのですが、 行き詰ってしまったので質問させていただきます。 本番環境とテスト環境で全く同じ処理を実行した所、テスト環境では 1分程度で処理が正常終了するのに本番環境だと 2時間経過しても処理が終わらず、なぜ同じ処理なのに本番環境と テスト環境で処理時間に違いがありすぎるのか分からず困っています。 処理としては25万件程あるデータ(テキストベース)を PL/SQLで読み込みTable_AにInsert または キーが同じデータが 存在しているならUpdateをし、 それと同時にトリガーで更新前と更新後の値を Log_TableにInsertします。 検証したときの手順としては、 (1)Table_AとLog_TableをCreate (2)トリガーのコンパイル (3)Table_Aのインデックスの作成 (4)PL/SQLのコンパイル (5)Table_AとLog_Tableの統計情報の取得 となっております。 ちなみに、テスト環境と本番環境の両方について、 実行されたSQLの実行計画を取得し比較したのですが、 同じ実行計画になっていました。 また、統計情報を取らずに処理を実行した場合は、テスト環境でも 2時間経過しても処理が終わりませんでした。

  • CGIのボタンの処理について

    CGIのフォームにチェックボックスがあってボタンを押すとある処理をさせたいのですが、 <form action="○○.cgi" method="post"> を使って新たなCGIを呼び出さずにフォームのCGIで処理をし、結果を反映させたいのです。もし方法をご存知の方がいましたら教えて欲しいのでよろしくお願いします。 <-------cgiソースの一部----------> print "<input type=\"checkbox\" name=\"re_$n\" value=\"$userdata[$i]\">"; print "<input type=\"button\" value=\"処理\">"; ボタンを押した時に処理をしてすぐさまリロードして同じページに結果を反映させたい!

    • ベストアンサー
    • CGI
  • perlの処理を遅くしたい

    CGI初心者です。わかる方教えてください。 少々古いですがactiveperl apache1.3.12を利用してperlプログラムを自宅のみで使うCGIプログラムをWINDOWS上で起動しています。 処理が長くまた同時に複数の処理をperlで処理します。ブラウザ送信ボタンよりCGIを実行してperl.exeを合計5つぐらい同時に起動します。 タスクマネージャーのプロセスの優先度の設定は実行当初「普通」になっていますが,これを実行当初から「低」にしたいと思っていますが やり方がよくわかりません。CGIの書き方,apacheの設定,ショートカットの書き方でできるんではないかと思っていますが,ご存じの方教えてください。OSはWINXPです。宜しくお願いします。

  • 24時間後に処理

    とあるサイトで、24時間後に処理を実行できるプログラムは実現可能でしょうか? 24時間なので当然ブラウザを開いた状態ではなく、閉じても24時間後に処理が実行される仕組みはないでしょうか。

  • 処理の切り分けについて

    現在、フォームから情報を処理するCGIをperlで書いています。 フォームの入力、確認、結果の表示を一様のながれで処理するプログラムはかけました。 この、入力画面にて、押したボタンによって、入力された情報は同じで、処理先のみを分けることはできま線でしょうか? 具体的には、確認画面へ飛ぶボタンと、その入力を処理にかけるページに飛ぶボタンの2つをひとつのフォームに共存させたいのです。 どうかよろしくお願いします。

    • 締切済み
    • CGI