PHP检查从属状态,而没有mysql_connect超时问题

PHP检查从属状态,而没有mysql_connect超时问题,第1张

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

我有一个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 downif( !$link_Local ) ){   $link_Local = MysqL_connect( $Host,$Password );}

然后,我将$link用于所有更新查询,并将$link_Local用作SELECT语句的连接.一切正常,直到从属服务器数据库关闭.如果本地数据库关闭,则$link_Local = MysqL_connect()调用至少花费30秒,然后它才会放弃尝试连接到本地主机并返回到脚本.这会导致大量的页面服务积压,并且基本上会关闭系统(由于响应时间非常慢).

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

谢谢您的帮助.我搜索了其他MysqL_connect线程,但是没有找到解决该问题的线程.

最佳答案在PHP.ini的[MysqL]部分下,设置以下值:

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

如果您有4个数据库从属服务器,那么您应该拥有一个相当不错的网络,该网络可以在1秒内响应数据库请求.信任您的服务器版本.

然后修复您的奴隶掉下来!这是一个问题!

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

总结

以上是内存溢出为你收集整理的PHP检查从属状态,而没有mysql_connect超时问题 全部内容,希望文章能够帮你解决PHP检查从属状态,而没有mysql_connect超时问题 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1165706.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存