PHP检查从机状态,无mysql\u连接超时问题

PHP检查从机状态,无mysql\u连接超时问题,php,mysql,Php,Mysql,我有一个web应用程序,它有一个主mysql数据库和四个从数据库。我想处理所有或几乎所有来自从属服务器的只读SELECT查询。我们的负载平衡器会自动将用户发送到其中一台从机,因为它们也运行Apache/PHP并提供网页服务。我正在使用包含文件设置与数据库的连接,例如: //for master server (i.e. - UPDATE/INSERT/DELETE statements) $Host = "10.0.0.x"; $User = "xx"; $Password = "xx"; $L

我有一个web应用程序,它有一个主mysql数据库和四个从数据库。我想处理所有或几乎所有来自从属服务器的只读SELECT查询。我们的负载平衡器会自动将用户发送到其中一台从机,因为它们也运行Apache/PHP并提供网页服务。我正在使用包含文件设置与数据库的连接,例如:

//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 );
}
然后,我将$Link用于所有更新查询,并将$Link\u Local用作SELECT语句的连接。在从属服务器数据库关闭之前,一切正常。如果本地数据库关闭,$Link\u local=mysql\u connect调用至少需要30秒,然后才会放弃尝试连接本地主机并返回脚本。这会导致页面服务的大量积压,并且由于响应时间极慢,系统基本上会关闭

有人知道通过PHP处理从服务器连接的更好方法吗?或者,是否有某种超时功能可用于在2-3秒后停止mysql_connect调用


谢谢你的帮助。我搜索了其他mysql_connect线程,但没有找到解决此问题的任何线程。

在php.ini的[mysql]部分下,设置以下值:

; Maximum time (in secondes) for connect timeout. -1 means no limit
mysql.connect_timeout = 1
如果您有4个db从机,那么您应该有一个相当不错的网络,可以在1秒内响应db请求。信任您的服务器构建

那就让你的奴隶倒下!!这是个问题


最后,并非每个页面请求都需要指向主数据库的链接。您应该尝试放置一个连接管理器类,该类将根据查询类型决定使用哪个数据库。这将减少与主数据库的连接数。

太好了!谢谢你的信息。我将研究连接器类。我仍在学习PHP的OO方面,因此让类正常工作可能是一个问题!不过,你的回答非常适合我目前的情况。我试图给你一张向上投票的票,但系统说我至少要有15个声誉点!很抱歉