私のWebサーバーは次のようなエラーに遭遇します:
サーバー: example.com ユーザー: yyy MySQL 接続制限: 現在の MySQL 接続: 81
この問題の原因について調査中です。
PHPマニュアルには次のように書かれています:
PHP 4 の Zend Engine で導入された参照カウント システムのおかげで、リソースへの参照がなくなったリソースは自動的に検出され、ガベージ コレクターによって解放されます。このため、メモリを手動で解放する必要はほとんどありません。
では、MySQL 識別子への参照を維持することは、ページが 3 秒以上 (一般的に) 表示される Web サイトにとって問題になる可能性がありますか?
私はそのようなMySQL接続を管理します:
1 - $LINK
MySQL リソースへの参照としてグローバル変数を保持しています
//MySQL connection
$LINK = 0;
function db_connect(){
//get variables
global $LINK,$CONF;
if($LINK == 0){
$LINK = @mysql_connect($CONF['host'], $CONF['user'], $CONF['password'])){
}
}
2 - このような関数を使用してクエリを実行します。
function db_query($sql){
global $LINK,$CONF,$NB_QUERIES,$TEMPS_QUERIES,$queries, $CLOSED;
if(db_connect()){
//do some debug stuff if needed
//execute the query
$result = @mysql_query($sql,$LINK);
//do some other debug stuff if needed
return $result;
} else {
return 0;
}
}
私は正しい方向を見ていますか、それともそのようなエラーが発生したときに最初に見なければならないことがいくつかありますか?