ティアのホームページ☆ミ:ID 726:タイトル PerlとIISとMySQL oC
no prev page 1/1ページ(1件) no next page
To Close..PerlとIISとMySQL 2010年09月23日12時00分
新鯖の設定は、未だ進んでいないんだけど、テスト用のサーバーで色々と実験はしています。

PHPのインストール後、phpMyAdminは普通にコピーをして、鯖名を127.0.0.1にすればそれで問題なく動く。
それは、OK

テスト用の鯖にはthread safe版を入れちゃったけど、none thread safe版で良い事も分かったし(IISがコントロールしているか、IISが複数スレッドでは動作していないか、そのあたりでしょうか?)
多分、none-thread safe版の方が軽いか、thread safe版だとデッドロックするか、そのあたりでしょうか?


まぁ
phpMyAdminからMySQLが操作できるんですから、PHP側はそれだけで問題なく動くという事で、それ以降は全く何も操作していなかったのですが・・・

SQLのエスケープについてちょっと調べていたら・・・・


perlからMySQLが動かない事が分かりました!!


これってば、大問題です!

すでに10万以上出費してから分かる大問題的な??

何気なく、ぐぐりました。


あっさり解決しました・・・・(笑


PerlからMySQLを呼びだすには、それ専用のパッケージをインストールしなければいけなかったのです。


ActivePerlはPPM(Perl Package Manager)を起動すると・・・・これが何とも凄い事に、オンラインで最新版がないかチェックしたり自動的にしてくれる(ので操作できるようになるまでめっちゃ時間が掛かる)。
当然、インストールされていないパッケージも、ここからインストール出来る。

まず、一覧を、インストール済みのから 全部 に切り替えて、すると、DBD-mysqlってのが有ります。
ちなみにDBD-mysqlPPっていうのもあります。

DBD-mysqlPPしか無い場合は、これを入れるしか有りませんが、DBD-mysqlが有ったら、多分こっちをお勧め。

DBD-mysqlPPはperlの昨日だけで接続しているのでperlが動いている環境であれば、どんな環境でもMySQLに接続できるんだそうです。

でもって、DBD-mysqlが有るならば、当然OS等に依存したこちらの方が早いと思いますので、こっちをお勧め。

右クリックして「インストールする」に設定した後、右上の実行(RUN)をクリックします。

これ、押さないとインストールしてくれない(笑

一度引っかかったw


で、インストールは、それなりの時間の後に特に問題もなく終わり・・・・

perlから問題なくアクセスできるようになりました。

use DBI;
$dsn = 'DBI:mysql:DB名:localhost:3306';
$user = "アカウント名";
$password = "パスワード";
$dbh = DBI->connect($dsn, $user, $password);

で、OKですね。

phpMyAdminがIP直打ちじゃないとアクセスできないのと違い、Perlの方はLocalHostでも問題なく繋がりますね☆

$sql="SQL文";
$sth = $dbh->prepare($sql);$rv=$sth->execute;
$line=0;
while(@row = $sth->fetchrow_array)
{
$Data1[$line]=$row[0];
$Data2[$line]=$row[1];



$line++;
};
$sth->finish();

とか、まぁこんな感じでデータの取得は出来ます☆


そんな感じで・・・こんな程度で良いかなぁ・・・・

まだ動かない様な事って有るかなぁ?

PerlとかPHPとかMySQL関連で、動かないような事はないと思うのですよ☆

あ〜、PerlをIISで実行するとフォルダが違う問題が有るのはご存じ?
これ、未だに解消されていないのよね^^
だから、手動で設定しないとダメかな?


なので、スクリプトとしてCGI
c:\perl\bin\perl.exe -X c:\xxxx\xxx\xxx.pl %s
って事で実行させると良い感じ・・・ちなみに

c:\xxxx\\xxx.pl

の中身は

#!/usr/bin/perl
$src=$ARGV[0];
@dir=split(/\\/,$src);
$file=pop @dir;
foreach(@dir)
{
$dir.=$_."/";
}
chdir($dir);
require $file;
1;
__END__

とかにしておくと、cgiのファイルが有る場所をカレントディレクトリとして実行させる事が出来ます。

尚、これは、簡易版で、実際には色々と不正対策を入れる必要が有ります☆
たとえばで言うのであれば、
UTF8に変換しておけば日本語のディレクトリ名やらファイル名中の¥に引っかかる事が無くなります。


IISサーバーを立ち上げる利点として日本語のフォルダが作れるところですかね〜、これが生かされなくなるのは勿体ないですからね^^

UTF8URLで日本語のアドレスを使うのは良いですね^^


ちなみに・・・Unicodeは 16bitと32bitが有りますが、本当の意味でunicodeになっているのはUTF8とUnicode 32Bitだけです。

16bit Unicodeはコードページ(何語か)をあらかじめ設定しておかなければいけないという問題点が有るので、唯一無二のコード体系とは言えません。

unicode 32bitに対応しているのも、結構少ないので、そうなるとUTF-8が一般的かな?

USC-4(unicode 32bit)を全文字含むので、UTF-8は全文字対応出来ますが・・ただ、データ量が多くなるのが問題点ですね^^

一部の文字は4バイト・・・(unicode 32bitは全文字4バイトに比べれば短い)なので、SJISやEUCを利用していた頃に比べると、長くなります。

日本語以外を含まないのであれば、これまで通り、EUCあたりが良いでしょうか??


なんか、話がそれてない?



また、鯖構築の上で何か問題が出てきたら、書こうかと思います☆
閉じる
テーマ:日記 URL:https://tsukiyori.sakura.ne.jp/index_m.cgi?ID=726
 
no prev page 1/1ページ(1件) no next page