欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP 一直报错.而且还不能正常访问.这是什么情况PHP Warning: mysqli::mysqli()(HY000/2003)

程序员文章站 2024-01-29 18:47:52
...
[23-Aug-2013 00:29:57] PHP Warning: mysqli::mysqli() [mysqli.mysqli]: (HY000/2003): Can't connect to MySQL server on '42.120.19.1' (10048) in D:\wwwroot\sms\common\DbManager.php on line 14
[23-Aug-2013 00:29:57] PHP Warning: mysqli::set_charset() [mysqli.set-charset]: Couldn't fetch mysqli in D:\wwwroot\sms\dao\PhoneDao.php on line 92
[23-Aug-2013 00:29:57] PHP Warning: PhoneDao::deleteUsedPhone() [phonedao.deleteusedphone]: Couldn't fetch mysqli in D:\wwwroot\sms\dao\PhoneDao.php on line 93
[23-Aug-2013 00:29:58] PHP Warning: mysqli::mysqli() [mysqli.mysqli]: (HY000/2003): Can't connect to MySQL server on '42.120.19.1' (10048) in D:\wwwroot\sms\common\DbManager.php on line 14
[23-Aug-2013 00:29:58] PHP Warning: mysqli::set_charset() [mysqli.set-charset]: Couldn't fetch mysqli in D:\wwwroot\sms\dao\SysParamDao.php on line 15
[23-Aug-2013 00:29:58] PHP Warning: SysParamDao::getSysParam() [sysparamdao.getsysparam]: Couldn't fetch mysqli in D:\wwwroot\sms\dao\SysParamDao.php on line 16
[23-Aug-2013 00:29:58] PHP Warning: mysqli::mysqli() [mysqli.mysqli]: (HY000/2003): Can't connect to MySQL server on '42.120.19.1' (10048) in D:\wwwroot\sms\common\DbManager.php on line 14
[23-Aug-2013 00:29:58] PHP Warning: mysqli::set_charset() [mysqli.set-charset]: Couldn't fetch mysqli in D:\wwwroot\sms\dao\SysParamDao.php on line 15

回复讨论(解决方案)

他不是已经告诉你“无法连接到MySQL服务器(42.120.19.1)”了吗?
检查mysql是否启动
检查你的账户是否已经授权

他不是已经告诉你“无法连接到MySQL服务器(42.120.19.1)”了吗?
检查mysql是否启动
检查你的账户是否已经授权
是授权的
他不是一直连接不上. 是并发的有点多,然后偶尔出现这样的情况.所以也不知道是不是并发引起的.或者其他什么原因引起的.但不是一开始就无法连接的

偶尔出现就不算是问题
你可以做错误处理:在出现连不上时,等待一会比如0.5秒再连

将你的mysql的并发数改大点,或者减少php的并发请求数。

将你的mysql的并发数改大点,或者减少php的并发请求数。
嗯.怎么查询并发数
SHOW STATUS WHERE variable_name like '%connection%';
这个?
如何修改呢?

偶尔出现就不算是问题
你可以做错误处理:在出现连不上时,等待一会比如0.5秒再连
如何等待?sleep(1); 吗?

是的,sleep 以秒为单位,usleep 以微秒为单位

设置最大并发数可以参考以下链接
http://hi.baidu.com/xiaoxvziboke/item/b8d1fc098b1a98e934990254

设置最大并发数 只能缓解当前的矛盾
如果访问量继续增大怎么办?继续修改?
如果没有权限修改怎么办?
如果增大并发数后,数据库变慢怎么办?

设置最大并发数 只能缓解当前的矛盾
如果访问量继续增大怎么办?继续修改?
如果没有权限修改怎么办?
如果增大并发数后,数据库变慢怎么办?
是用等待+增加并发权衡吧?
那这个等待,是有try catch 还是 if else
连接失败返回值是什么?

将你的mysql的并发数改大点,或者减少php的并发请求数。
我用
ab -n 1000 -c 100
来测了一下.到300并发的时候自动关闭连接.
并不是我出现这样的问题

$loop = 1; //重复连接的次数do {  $db = @ new mysqli(参数略);}while($db->connect_error && $loop--);if($db->connect_error) echo $db->connect_error;



设置最大并发数 只能缓解当前的矛盾
如果访问量继续增大怎么办?继续修改?
如果没有权限修改怎么办?
如果增大并发数后,数据库变慢怎么办?
是用等待+增加并发权衡吧?
那这个等待,是有try catch 还是 if else
连接失败返回值是什么?

$loop = 1; //重复连接的次数do {  $db = @ new mysqli(参数略);}while($db->connect_error && $loop--);if($db->connect_error) echo $db->connect_error;




设置最大并发数 只能缓解当前的矛盾
如果访问量继续增大怎么办?继续修改?
如果没有权限修改怎么办?
如果增大并发数后,数据库变慢怎么办?
是用等待+增加并发权衡吧?
那这个等待,是有try catch 还是 if else
连接失败返回值是什么?
你看是不是因为我使用了默认的wait-timeout 8小时
我是不是可以设置为30秒. 30秒没进一步操作,强制关闭此链接呢?

http://www.wbsz.com/html/25425.html
这里看过来