Mysql_connect zaman aşımı sorunları olmadan PHP Giriş köle durumu

1 Cevap php

Ben bir ana mysql db ve dört köle dbs sahip bir web uygulaması var. Ben köle sorguları (SEÇ) salt okunur tüm (veya hemen hemen tüm) işlemek istiyorum. Onlar da Apache / PHP çalışan ve web sayfalarını hizmet vermekteyiz yana yük dengeleyici, otomatik köle makinelerin birine kullanıcıya gönderir. Ben kurulum için bir içerme dosyası kullanıyorum gibi veritabanlarına bağlantı:

//for master server (i.e. - UPDATE/INSERT/DELETE statements)
$Host = "10.0.0.x";
$User = "xx";
$Password = "xx";
$Link = mysql_connect( $Host, $User, $Password );
if( !$Link ) )
{
   die( "Master database is currently unavailable.  Please try again later." );
}

//this connection can be used for READ-ONLY (i.e. - SELECT statements) on the localhost
$Host_Local = "localhost";
$User_Local = "xx";
$Password_Local = "xx";
$Link_Local = mysql_connect( $Host_Local, $User_Local, $Password_Local );

//fail back to master if slave db is down
if( !$Link_Local ) )
{
   $Link_Local = mysql_connect( $Host, $User, $Password );
}

Daha sonra SELECT ifadelerine için bağlantı olarak tüm güncelleştirme sorguları ve $ Link_Local için $ Linki kullanın. Köle sunucu veritabanı iner kadar her şey gayet iyi çalışıyor. Yerel db aşağı eğer localhost bağlanmaya çalışıyor vazgeçer ve geri komut dönmeden önce, $ Link_Local = mysql_connect () çağrısı, en az 30 saniye sürer. Bu sayfa Servislerime büyük bir birikim olur ve temelde (nedeniyle son derece yavaş tepki süresi) sistem kapanır.

Herkes PHP ile köle sunuculara bağlantıları işlemek için daha iyi bir yol biliyor mu? Ya da, 2-3 saniye sonra mysql_connect aramayı durdurmak için kullanılan olabilir, zaman aşımı fonksiyonu çeşit var mı?

Yardımlarınız için teşekkürler. Ben diğer mysql_connect konuları aradı, ama bu konuyu ele aldığını görmedim.

1 Cevap

Lütfen php.ini [MySQL] bölümünde, bu değeri ayarlayın:

; Maximum time (in secondes) for connect timeout. -1 means no limit
mysql.connect_timeout = 1

Eğer 4 db köle varsa, o zaman 1 saniyenin altında bir db isteğine cevap verebilecek oldukça iyi bir ağa sahip olmalıdır. Sunucu yapı güvenin.

Sonra köleler aşağı gidiyor düzeltmek! Bu bir sorun!

Son olarak, her sayfa isteği ana DB için bir bağlantı gerek olmamalıdır. Veritabanı kullanmak için sorgu türüne göre karar verecek yerde bir bağlantı yöneticisi sınıfı koyarak denemelisiniz. Bu aynı zamanda sizin ana DB bağlantı sayısını düşürecektir.