人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

mysql_connect()とmysql_pconnect()どちらが
自分のサイトに適しているか教えて下さい。

サーバー:XREA
言語:php
アクセスは多く、1秒間にMySQL接続が5~10くらいあると思います。(8割がSelect)

検索しても、phpマニュアルばかりで結局どういう場面で使い分ければ良いのか分かりませんでした。
pconnectのほうが負荷が大きいけど、早いみたいな考え方でいいんでしょうか?

●質問者: wrwrwrwr
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:MySQL PHP SELECT XREA いるか
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● いのくに
●10ポイント

http://www.atmarkit.co.jp/flinux/rensai/mysql05/mysql05b.html

MySQLサーバへの接続にはmysql_connect関数を下記の要領で用います。

<?php
$接続ID = mysql_connect("MySQLサーバのアドレス:ポート番号","ユーザー名","パスワード");
?>

mysql_connect()の戻り値として接続IDを受け取ります。切断の手順を加えると下記のようになります。

<?php
$接続ID = mysql_connect("...","...","....");
mysql_close($接続ID);
?>

mysql_connect()関数とは別に、もう1つMySQLサーバとの接続を確立する関数が用意されています。上記のmysql_connect()関数がスクリプトの終了とともに自動的に接続が解除されるのに対し、下記の方法はスクリプト終了後も永続的に接続が確立されます。

<?php
$接続ID = mysql_pconnect("MySQLサーバのアドレス:ポート番号","ユーザー名","パスワード");
?>

mysql_pconnect()関数は、すでに同じサーバ・ユーザーで接続が確立されている場合、新たな接続を試みず、既存の接続IDを返します。そのため何度呼び出されても無駄な接続が発生しません。データベースへの接続が頻繁な用途では、プロセスを最小限にできるので動作コストが少なくなります。しかし、データベースとの接続がそれほど頻繁でない場合は、サーバに無駄なプロセスを常駐させることになります。どちらの接続関数を使うかは、運用をよく考える必要があります。

◎質問者からの返答

残念ながらこちらは既に読んでおりました。

これらを踏まえたうえで、自分の環境にどちらが適しているか知りたかったです。


2 ● b-wind
●40ポイント ベストアンサー

pconnectのほうが負荷が大きいけど、早いみたいな考え方でいいんでしょうか?

そうなることが多いですが、厳密には異なる場合もあります。


コネクションを張り続けることで、いちいち接続したり切断したりするコストを下げられますが、反面コネクションを張りっぱなしにすることにより、サーバー側のメモリなどのリソースを多く消費します。

とくに PHP の場合最大で Apache のプロセス数だけコネクションが張られるのでDBの負荷は大きいです。

どちらの方が有効に働いて早くなるかはケースバイケースなので、一概には言えません。


一応今回の場合 XREA という共用サーバーであること、

PHP でありいわゆるコネクションプーリングのメリットを生かしにくい環境である事、

MySQL サーバーは比較的コネクションの作成のコストが低いのでメリットが出にくいことから、mysql_connect の使用をオススメしておきます。

◎質問者からの返答

大変よく分かりました。

ありがとうございました。


3 ● kn1967
●30ポイント

(1)利用者が特定少数

pconnect

不特定多数のアクセスを受け入れると負荷が非常に大きくなってしまうが、特定少数であれば接続待ち時間のロスを大きく減らす事ができる。

(2)その他

connect→close

サーバー負荷が掛かった場合はタイムアウトなどが発生して、自然とアクセス制限がかかったような状態になる。


上記は非常に単純に分けたのですが、例えば『書き込み権限のある人/ない人』や『関係者からのアクセスとゲストアクセス』などといった住み分けが出来るかどうかを検討して、利用者にあわせてプログラム側で両者を使い分けるといった事も考慮してみてください。

◎質問者からの返答

大変よく分かりました。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ