2010-11-18 17 views
2

MySQL sunucusuna bağlantı başarılı olursa, PHP'yi kontrol etmenin en iyi yolu nedir? Önce soket bağlantısı (fsockopen ile) açmaya ve MySQL'e (kullandığınız uzantı üzerinden) bağlanmaya çalışan bazı çözümler gördüm. Her zaman iki bağlantı yapmak zorunda olduğunuzdan bu kadar emin değilim, bu sunucuda çok fazla çekiç var mı?MySQL sunucusunun bağlantılarını kabul edip edemediğini kontrol edin

Sorunum, MySQL sunucum her ne sebeple olursa olsun kilitlendiğinde veya çalışmayı durdurursa, web sayfasının çalışmayı durdurması (uzun bir süre için yüklendikten sonra genellikle 504 ağ geçidi zaman aşımı hatasıyla geri dönmesi) olacaktır. MySQL mevcut değilse kullanıcı dostu bir hata mesajı görüntülemek istiyorum. Bu da umarım, MySQL'in zaten mücadele ediyor olmasından daha fazla dövülmesini engeller, çünkü yeni müşteriler sunucuya dönene kadar bağlantı kuramaz.

İlgili ise, MySQLi uzantısını kullanıyorum.

+0

itibaren olmamalı mySQL bağlantısı girişimi zaman aşımına nispeten hızlı bir şekilde başarısız olduğunda nedir? –

+0

, connect_timeout ayarına bağlı olarak – ajreal

cevap

2

sizin ihtiyaç MYSQLI_OPT_CONNECT_TIMEOUT mysqli belirttiğiniz :: seçenekleri details

+0

+ 1'e bağlıdır. –

+0

Tamam, bu, zaman aşımının daha erken gerçekleşmesine yardımcı olur. Ama hala bir MySQLi bağlantısının MySQL sunucusu için bir 'fsockopen' kontrolünden daha pahalı olduğundan endişeleniyorum. Düşüncesi olan var mı? –

+0

Fsockopen'i kullanarak, IMHO - İki, birden büyüktür. – ajreal

0
<?php 
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db'); 

/* 
* This is the "official" OO way to do it, 
* BUT $connect_error was broken until PHP 5.2.9 and 5.3.0. 
*/ 
if ($mysqli->connect_error) { 
    die('Connect Error (' . $mysqli->connect_errno . ') ' 
      . $mysqli->connect_error); 
} 

/* 
* Use this instead of $connect_error if you need to ensure 
* compatibility with PHP versions prior to 5.2.9 and 5.3.0. 
*/ 
if (mysqli_connect_error()) { 
    die('Connect Error (' . mysqli_connect_errno() . ') ' 
      . mysqli_connect_error()); 
} 

echo 'Success... ' . $mysqli->host_info . "\n"; 

$mysqli->close(); 
?> 

http://www.php.net/manual/en/mysqli.connect.php

+0

Bu MySqli uzantısının ne kadar uzun süre bağlanmayı denediğini bilmesini bekledikten sonra bana bir hata verecektir. Yeni bir MySQL kullanmadan önce bağlanabileceğimi bilmem gerek ... –

İlgili konular