PHP Mysql配置 - 连接太多

时间:2011-04-24 13:52:14

标签: php mysql

美好的一天!

我在免费的网络托管服务器中部署了一个网站。最近,我无法访问我的SQL并收到此警告:连接太多。

我的代码:

为了访问mysql,我创建了一个config.php文件。

 <?php
        // save this as config.php
        define('DB_HOST', 'localhost');
        define('DB_USER', 'username');
        define('DB_PASSWORD', 'password');
        define('DB_DATABASE', 'pascual4_eventpost');
        $conn=mysql_pconnect(DB_HOST, DB_USER, DB_PASSWORD)
          or die ("Error connecting to database");
        mysql_select_db(DB_DATABASE)
          or die ("Error: Cannot access database");
    ?>

所以如果我需要访问我的数据库。我只是致电require("config.php");

在脚本完成之前,我已经在某处读过mysql连接会自动关闭。这就是为什么我不在我的PHP页面上放置任何mysql关闭连接代码。或者我是否仍需要手动关闭它并在每个页面上输入mysql_close($conn);

所以我重新启动了我的电脑并冲洗了我的dns。幸运的是,现在我可以访问我的mysql数据库,但速度非常慢。也许是因为我使用的是免费网络托管服务?但是,就我而言,有没有办法可以加速我的mysql连接和查询。我可以在上面的代码中包含哪些验证,以便我可以提高mysql连接的性能?谢谢。

3 个答案:

答案 0 :(得分:2)

正如您所说,PHP将在您的脚本终止时关闭所有打开的连接,因此除非您通过执行长时间运行的脚本/查询等来连接连接,否则这很可能是一个非常低的{{{ 1}} mysqld设置,考虑到你正在使用免费托管包,这并不是一个巨大的惊喜。

我不确定每个“页面”使用了多少个连接,但是:

  1. 根据我使用max_connections的经验,通常会使情况变得更糟,而不是更好。 (只需使用mysql_pconnect。)

  2. 如果您在同一页面上使用多个连接,则尽可能重新使用相同的数据库连接。

  3. 如果做不到这一点,可能是时候寻找更合适的托管包了。

答案 1 :(得分:1)

使用持久连接时,可能会导致此连接泄漏。

您是否考虑过不使用持久连接?或使用mysqli库或pdo类并允许这些为您管理?

答案 2 :(得分:1)

    $conn=mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)
    remove p here^

从问题标题中解决问题。

至于数据库性能,很难从这样模糊的描述中分辨出来,比如“它很慢”。什么肯定慢?连接自己?你测量过了吗?一些疑问?哪个查询?