PHP保持PDO ATTR_PERSISTENT连接活着

时间:2014-11-02 12:37:04

标签: php mysql pdo

我正在使用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

1 个答案:

答案 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。 我还建议您在知道长时间不使用它时明确关闭脚本中的连接。