我正在使用PDO持久连接运行无休止的PHP脚本,如下所示:
$conn=new PDO(
'mysql:host=127.0.0.1','user','pass', array(PDO::ATTR_PERSISTENT => true)
);
mySQL wait_timeout
变量设置为28800
,我将脚本空闲了12个小时以进行测试;并自动删除连接,因此我假设PDO::ATTR_PERSISTENT
属性被系统变量wait_timeout
取代。
所以我想知道是否有一个设置或另一个PHP方法来保持连接呼吸只要PHP脚本正在运行以及这是否是一个好习惯。
我的计划B将每60分钟执行一次无资源的mySQL查询以重置时钟。
操作系统:4GB RAM VPS Debian 64位SSD
答案 0 :(得分:5)
我建议你采用另一种方法来处理这种情况。每当您需要在持久的脚本中运行查询时,请确保存在连接。否则重新连接。
try {
echo "Testing connection...\n";
$old_errlevel = error_reporting(0);
self::$pdo->query("SELECT 1");
} catch (PDOException $e) {
echo "Connection failed, reinitializing...\n";
self::init();
}
您可以找到full class example here。 我还建议您在知道长时间不使用它时明确关闭脚本中的连接。