我正在为我的一个应用程序编写安装程序,我希望能够测试一些默认的数据库设置.
使用PDO测试有效和无效的数据库连接是否可行?
我有以下代码:
try{
$dbh = new pdo('mysql:host=127.0.0.1:3308;dbname=axpdb','admin','1234');
die(json_encode(array('outcome' => true)));
}catch(PDOException $ex){
die(json_encode(array(
'outcome' => false,
'message' => 'Unable to connect'
)));
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是脚本试图连接,直到60秒的脚本执行时间用完,而不是说它无法连接到数据库.
谢谢
我正在使用PDO Persistent Connection运行无休止的PHP脚本,如下所示:
$conn=new PDO(
'mysql:host=127.0.0.1','user','pass', array(PDO::ATTR_PERSISTENT => true)
);
Run Code Online (Sandbox Code Playgroud)
mySQL wait_timeout变量设置为28800,我将脚本空闲了12个小时以进行测试; 并自动删除连接,因此我假设该PDO::ATTR_PERSISTENT属性被系统变量取代wait_timeout.
所以我想知道是否有一个设置或另一个PHP方法来保持连接呼吸,只要PHP脚本正在运行以及这是否是一个好习惯.
我的计划B将每60分钟执行一次无资源的mySQL查询来重置时钟.
操作系统:4GB RAM VPS Debian 64位SSD
我无法在任何地方找到答案.也许它非常简单
我有这样的mysql PDO连接:
try{
$DBH = new PDO("mysql:host=$db_hostname;dbname=$db_database", $db_username, $db_password);
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
catch (PDOException $e){
echo $e->getMessage();
exit;
}
Run Code Online (Sandbox Code Playgroud)
我想测试连接是否有效,即.如果密码,用户名,数据库名称和主机名拼写正确.
尝试,抛出似乎只是拾取基本错误,如果驱动程序拼写错误.如果说密码错误,它不会引发错误.
谢谢