首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP PDO连接失败抛出警告和脚本执行超时

PHP PDO连接失败抛出警告和脚本执行超时
EN

Stack Overflow用户
提问于 2011-06-30 01:31:45
回答 2查看 4.7K关注 0票数 6

我正在尝试像这样实例化一个PDO对象:

代码语言:javascript
复制
$this->pdo['pdo'] = new PDO('mysql:host=127.0.0.1;dbname=mydb;charset=UTF-8',
                    'myuser', 'my pass');

我想捕捉我认为在MySQL服务器不运行时会抛出的异常。

PHP.net说:“如果连接到请求的数据库的尝试失败,PDO::__construct()将抛出PDOException。”

但是,如果我关闭数据库服务器并运行脚本,我得到的只是一个警告:

代码语言:javascript
复制
Warning: PDO::__construct() [pdo.--construct]: [2002] 'A connection attempt failed 
because the connected party did not properly respond after a period of time, or 
established connection failed because connected host has failed to respond.' in
C:\test\test.php on line 5

Fatal error: Maximum execution time of 60 seconds exceeded in C:\test\test.php 
on line 0

没有抛出异常。

有没有一种直接捕获错误的方法(不需要临时设置自定义错误管理器函数?)

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-30 01:50:33

将数组配置作为PDO()的第四个参数传递:

代码语言:javascript
复制
PDO::setAttribute ( PDO::ATTR_TIMEOUT , '5' );  //> Secs

降低连接超时

代码语言:javascript
复制
PDO::setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

总是抛出异常。

用法:

代码语言:javascript
复制
new PDO(,array(

              PDO::ATTR_TIMEOUT => "10",
              PDO::ATTR_ERRMODE =>  PDO::ERRMODE_EXCEPTION         

));
票数 4
EN

Stack Overflow用户

发布于 2013-01-29 06:11:52

我也遇到过类似的问题。我终于解决了这个问题。

问题是,我在for/while循环中有一个"new PDO('mysql:host=127.0.0.1;dbname=mydb','myuser','my pass');“。

当我做3个或4个循环时,这是正确的。当我有5000次迭代时,我的mySQL服务器似乎阻塞了我,然后我收到"Warning: PDO::__construct() pdo.--construct: 2002 'A connection attempail...“错误消息。

我知道这不是太聪明,不能把“新的PDO(...”变成一个循环。希望这能对你们有所帮助。

安托万

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6524829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档