• ベストアンサー

perlプログラムの連続起動方法

perlのバッチプログラムをレンタルサーバー(ロリポップ)で動かそうとしているのですが、サーバーの制約により処理が途中で中断されてしまいます。 サーバーの制約とは30秒を超える処理を起動してはならないというものです。 では、入力データ量を1プログラムあたり30秒以内に収まる範囲に分割し、プログラムを連続して起動することで制約を回避しようと思うのですが、プログラム起動の方法がわかりません。 プログラム終了をトリガとして後続プログラムを起動する仕組みの実現方法を教えてください。

  • fken
  • お礼率91% (22/24)
  • Perl
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • t-okura
  • ベストアンサー率75% (253/335)
回答No.1

> プログラム終了をトリガとして後続プログラムを起動する仕組みの実現方法 > を教えてください。 こういう方法ではありませんが、プログラムから Location: ヘッダを 返すなどの方法で、クライアントが後続のプログラムをキックするよう にしてはいかがでしょうか。

fken
質問者

お礼

回答していただき、ありがとうございました。 Locationとは初耳ですが、勉強してみます。

その他の回答 (1)

回答No.2

ロリポップということなので、Webサーバのタイムアウトが30秒設定なのだと思います。 とすると、Perl内部で連続起動することで処理を分断してもダメなんじゃないかと。つまり、一度ブラウザに結果を返さないといけないのではないかと思います。 なので、t-okuraさんの回答のようにLocationで再度CGIを呼び出すようにするとかAjaxにするとかの方法になるかと思います。 たぶん、MovableTypeで記事を再構築する時に処理を分割しているのが参考になりやすいかと思います。

fken
質問者

お礼

回答していただき、ありがとうございました。 MovableTypeとはこれまた初耳です、参考にしてみます。

関連するQ&A

  • Perl のプログラム二重起動について

    Perlでの二重起動?についての疑問があるので質問いたします。 ============================ (状況) 1)Aというプログラムが存在し、そのAというプログラムはタスクスケジューラーによって10分毎に起動しています。 2)Aプログラムは全体の処理が終わるまでに通常5分の時間がかかります。処理が終わればexitで終わります。 (ちなみにAプログラムはファイル書き込みなどの排他処理が必要なフローはありません) ============================ というのをふまえ、疑問点が出てきたので質問します。 例えば、あるイレギュラーな出来事が起こり、Aプログラムの処理時間が15分に伸びてしまいました。 しかし、タスクスケジューラーは10分間隔でAプログラムを起動させます。 このとき、オーバーした5分間だけAプログラムは二重に起動することになります。           0   5    10 15 20 最初のAプログラム ===============  次のAプログラム           ========== この場合、windows7上のActivePerlは、どんな動きをするのでしょうか? 予約みたいな形になり、最初のAプログラムが終わってから次のAプログラムが動くのでしょうか? それとも二重起動するのでしょうか?

    • ベストアンサー
    • Perl
  • javascriptをperlの代わりに使うことは

    サーバエンジニアがjavascriptをperlの代わりに使うことは出来ますか? ブラウザで動作であると、何かperlでは出来るが、javascriptでは出来ない事があるのでしょうか? サーバでバッチとして使うのに問題があるのでしょうか? ブラウザさえあれば環境が整っていなくてもどんなOSのサーバでも使えるので、サーバエンジニアが作るレベルのプログラムならperlよりも良いかと思ったのですが、、、

  • /etc/aliasesを使ってPerlプログラムを起動

    初めまして、wantedと申します。 以下のご回答宜しくお願い致します。 メールサーバにSendMailを使っており、/etc/aliasesを使ってPerlプログラムを起動するようにしています。 このプログラムで、受信したメールに添付してあるcsv形式のファイルの内容を解析したいのですが、添付したファイルの内容を取得するには、どうしたらいいのでしょうか?

  • C#でのプログラム方法

    C#(コンソールでの実行ファイル)でのバッチファイル実行方法に悩んでいます。 実行イメージとして **************************************** 1. C#(A.exe)をダブルクリックで起動する 2. C#プログラム[A]はバッチファイルを起動する 3. C#(B.exe)をダブルクリックで起動する 4. C#プログラム[B]は2で起動したバッチファイルを終了させる(=DOS窓をCloseさせる?) **************************************** を考えています。 1~2の処理はなんとなくわかったのですが 4にてバッチファイルが起動しているDOS窓をどうCloseさせたらいいのかわかりません。 助けてください。

  • プログラムを時差で操作

    バッチもしくはVBSCRIPT等で呼び出したプログラムを制御する動きを実現したいです。 やりたいことは、例えばメモ帳を最小化で開き、5秒後に最大化する、という感じのものです。 メモ帳を閉じて5秒後に最大化で開く、というやり方ではなく開いたプログラムを時差で操作したい、という意味合いがあります。 凝ったものでなくてもいいので実現することは可能でしょうか?

  • Perlのforkについて

    PerlでDBに格納するプログラムを作成しています。 パラレルで行ないたいためにforkを使っているのですが、 いまいちわかっていないのでご教授ください。 やりたいことはパラレルでのDB格納です。 親、子両方のプロセスが完了したら後続処理を行い、 0を戻したいのですが、下記の方法ですと、 子が終了したらprintしてからreturnしているようです。 このように、親子の処理が完了したら後続処理に移るようにするためには どうしたらよいのでしょうか? if ($pid = fork()) { #親プロセス insertDB(); wait; return 0; } else { insertDB(); } print"ここは最後に通したい"\n;

    • ベストアンサー
    • Perl
  • perlのインストール

    perlのインストール後、コマンドプロンプトを起動してユーザー名の後、perl-vと入力したのですが、perl-vは内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」となります。これではインストールが正しくされていないと思うのですがどうしたらよいのでしょうか。よろしくお願いします。

    • ベストアンサー
    • CGI
  • プログラムをタイマー起動する方法

    WINDOWS 2000サーバと2003サーバで一定時間毎にプログラムを起動する方法を教えて下さい。

  • VBで別のプログラムを起動し他の処理を中断したい

    VBプログラムの実行中に、shell("hoge.exe")で別のプログラムを起動しそのプログラムが終了すれば次の処理に移るという処理をしたいんですが、実現方法がわかりません。どうすればよいでしょうか?アドバイスよろしくお願いします。

  • シャットダウンのときに自動であるプログラムを走らせたり

    windowsxpでシャットダウンのときに自動であるプログラムを走らせたりバッチファイルを起動させて、バックアップ処理をしたいんですが、 (処理が終わるまでシャットダウンはしないように)そんなことは可能ですか? よろしければ方法をご教授ください

専門家に質問してみよう