php - 我应该在 php cli 中的每个查询后关闭 mysql_connection 吗?

标签 php mysql zend-framework

我写了一个 php cli 脚本作为一个小型在线游戏主机。(是的,我知道这很奇怪。)

本脚本中经常使用Mysql查询。恐怕连接会占用资源,所以每次我需要运行查询时,我都会编写如下代码:

    $con = mysql_connect("localhost","xxx","xxx");
    mysql_select_db("xxx",$con);
    mysql_query($sql)
    $con = null;

当有很多时,这真的很令人沮丧。 #_#

我的问题是我应该只使用一个连接,并在脚本中的任何地方使用它,并在退出时将其设置为 null 吗?我认为 Zend 引擎应该有一些连接池。

附言。 每个脚本负责一个播放室,因此一次最多可播放 100 个, echo 可能会持续 24 小时。

谢谢你的帮助!

最佳答案

连接应该持有资源。那就是你想要的。如果您不断地分配/取消分配连接,您每次都会做更多的工作。

如果您有一个长时间运行的进程必须不断与 MySQL 通信,请打开一个连接并保持打开状态。它被称为持久连接。不会有什么不好的事情发生。但是如果你不断地打开/关闭连接,你就是在进行 TCP 握手,迫使操作系统分配文件描述符并且 CPU 必须做更多的工作,因为操作系统不断地为你创建/销毁的每个连接创建一个新线程。这非常浪费。

但是,保持连接打开是不够的。连接可能会死亡。您需要一个数据库连接包装器,它可以确定是否建立了连接,如果没有建立连接。同一个包装器应该负责断开/重新连接。

换句话说,不要关闭连接。重写您的代码,使您可以调用一个函数/对象来处理连接/重新连接并返回您使用的连接资源。

关于php - 我应该在 php cli 中的每个查询后关闭 mysql_connection 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25179622/

相关文章:

zend-framework - 在 Zend 中使用单一表单在两个表中插入数据

php - 使用 Zend Framework 的原始 SQL 查询

mysql - 动态获取数据函数

php - 带约束的 Eloquent 多重嵌套关系

mysql - OS Maverick 破坏了 MySQL?

php - 使用多个 AJAX 操作的正确方法?

php - 为什么我在使用 PHPmyadmin 和 mysql 的 PHP 中出现表不存在错误?

java - 存储数据 XML、数据库和...的解决方案?

php - 在 php 中循环遍历 JSONArray 的值

php - 登录更新用户角色,但如果查询匹配则不继续重定向或设置页面