- 締切済み
Perlで他サイトの情報を取得し一覧表示させる処理の高速化
Perlで他サイトの情報を取得し一覧表示させる処理の高速化 Perl初心者です。よろしくお願いします。 同サーバ内にあるテキストデータをPerlで読みこみ、HTMLで一覧表示させるプログラムを見よう見真似で作成しました。リストのレコード数は10~30ほど。タイトルとボタンA~Eが配置されており、ボタンAはファイルA、ボタンBはファイルB…とリンクしています。 ファイルは同サーバ内にあり、ファイルの有無を調べてリンクするか、しないかを設定していましたが、この度、訳があってこのファイルが他サーバへ移動、さらにシステムから吐き出される仕組みになって、同じPDFファイルでも「xxxx.pdf」が「http://hoge.com/hoge.aspx?code=1234」のようにファイルの場所を特定することができなくなりました。 仕方なくファイルの有無を指定するHTMLを書き出すようにしてもらったのですが、それをget(url)で取得する方法に切り替えたとたん、一覧表示にするのに5~6秒かかるようになってしましました。 さらにこれが原因でアクセス過多でサーバに負荷がかかり、ページを表示できない要因にもなってしましました。 情報の取得方法や、負荷をかけない方法などご教授いただければ幸いです。 以下CGI抜粋 #!/usr/local/bin/perl use LWP::Simple; use Time::Local; use LWP::UserAgent; $file = @ARGV[0]; $data = $file; $file .= ".txt"; print "Content-type: text/html\n\n"; print <<HTML; <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'> <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=x-sjis"> <META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript" /> … </HEAD> <BODY style="margin : 0px; > <TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0"> HTML open(IN, $file); while(<IN>){ @in = split(/\t/); $pdf = "https://www.hoge.com/filecheck/entFileCheck.aspx?=@in[10] $gPdf = get($pdf); #ボタン配置の処理とか・・・ close(IN); print "</BODY>\n"; print "</HTML>\n"; exit;
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- _--_1l1_1_
- ベストアンサー率67% (102/152)
- _--_1l1_1_
- ベストアンサー率67% (102/152)
- _--_1l1_1_
- ベストアンサー率67% (102/152)
- _--_1l1_1_
- ベストアンサー率67% (102/152)
補足
ありがとうございます。 get()の前後で計測すると「0.01~0.05」。「0.5~0.6」ではありませんでした。しかし全体では10~12秒かかっています。get()の処理をはずすと「0秒」。get()に時間がとられているのは間違いないようです。