• 締切済み

speedyCGIで動作させるようにする為の、修正について

お世話になります。 speedyCGIで動作させるようにする為の修正箇所や手順、要点についてお伺い出来ればと思い投稿しております。 現在、speedyCGIにてオプション -r1にて動作中です。 ※-rとは、指定回実行すると、SpeedyCGIプロセスは終了する その為、1回実行すると終了し、の繰り返しなのですが、これですと正常に動作するのですが、結果的に毎回起動させる為、出来れば-r3などにして動作するようにしたいと考えております。 下記に修正を行なった手順を示します。 1.スクリプトの最初部分を変更 #!/usr/bin/perl を下記に変更 #!/usr/bin/speedy -- -M3 -r1 -t300 -b50000 -B50000 BEGIN{ $| = 1; print "Content-type: text/html\n\n"; open(STDERR, ">&STDOUT"); } use strict 'vars'; use warnings; 2.local変数をすべてmy変数に置換 3.スクリプト実行時のエラーログから、 Global symbol "$abc" Global symbol "@abc" Global symbol "%abc" などのGlobal symbol ""以外の部分を取り出し下記 use vars qw //; の中に記述 use vars qw /$abc @abc %abc .../; 4.元のスクリプトに上記を追加 上記の手順でPerlスクリプトを実行時、正常に実行されております。 しかし、オプションの-r1を-r3に変更した場合、リロードを行ないますとそのスクリプトのCopyrightしか表示されず、他のスクリプトの場合によっては何も表示されません。 スクリプト内部の全体的な処理の流れですが、 require"/dir/common.cgi" require"/dir/set-up.cgi" require"/dir/name1.cgi" require"/dir/name2.cgi" require"/dir/name3.cgi" &Form; $Copyright="Copyright"; if($FORM{mode} eq "aaa"){&Test;} のような形で特定の関数へ処理を分岐させてゆくような形式です。 あまり良くわかってないのですが、オブジェクト指向的なというか徹底したモジュール化されているようなスクリプトではない(関数をrequireで毎回呼び出すような)タイプのスクリプトの場合、speedyCGIで2回目以降の呼び出し時にも動作させるようにするには、どのような手順で修正してゆけばよいのでしょうか。 *wikiのspeedyCGI対応しているスクリプト内部を参考に見てみたのですが、戸惑うばかりでどこからどのように手をつけてよいのかわかりません。 お手数ですがご教授頂けますようお願い致します。 また参考になるHPなど御座いましたら合わせてご案内頂けますと幸いです。

みんなの回答

  • 2NN
  • ベストアンサー率40% (143/353)
回答No.1

SpeedyCGIのBEGINブロックは最初の1回だけしか実行されなかったと 思います。 SpeedyCGIでrequireを使うスクリプトの場合に気をつけることは、 グローバル関数くらいなので、2.が正しく変更できていれば 問題ないように思います。

taku0
質問者

お礼

仰るとおりにしているのですが、何故か2回目以降の呼び出し時にはCopyrightしか表示されず内容が何も表示されないようになってしまうのです。

関連するQ&A

専門家に質問してみよう