我试图实例化一个PDO对象是这样的:PHP PDO连接失败抛出警告,脚本执行超时
$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。”
但是如果我关闭了数据库服务器,并运行该脚本我得到的是一个警告:
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
没有抛出异常。
是否有捕获错误的直接方式(没有临时设置的麻烦自定义错误管理器功能?)
谢谢!
执行时间超过了一个致命的错误如果可能的话,只要将“重要”位放入错误处理程序,人们可以轻松地绕过时间限制并运行脚本。 –
我刚刚发现解决方案: ' $ this-> pdo ['pdo'] = new PDO('mysql:host = 127.0.0.1; dbname = mydb; charset = UTF-8','myuser','my pass',array(PDO :: ATTR_TIMEOUT = >“10”));' 最后一个参数(attributes数组)允许我指定一个比PHP的最大执行时间短的超时。然后异常抛出确定。 –