php mysql_connect 资源总是一样的

Posted

技术标签:

【中文标题】php mysql_connect 资源总是一样的【英文标题】:php mysql_connect resource is allways the same 【发布时间】:2011-09-24 07:44:36 【问题描述】:

我的 php 脚本有问题,你可以在这里看到: http://codepad.org/F0qhElRC

没有为来自子节点的每个连接打开新资源。 我已经尝试使用 127.0.0.1 或我的本地网络 IP 但没有任何效果, mysql 中的 max_user_connections 也设置为 0 打开来自 web 的连接给了我一个不同的 网络资源。但在命令行中它使用相同。

在 mysql_connect 中我指定 new_link 为真,我在 bd 类中放置了一个 __destruct 如果孩子被摧毁,则关闭连接。关闭连接不会使 即使在我重新启动脚本后,php 也会打开一个新的。该资源可能是免费的,所以我应该 指望这一点,但在孩子们中,我也尝试过睡觉,但这并不能让它运行 新资源。

关于如何调试这个有什么建议吗?

基本上,我希望每个新脚本或子调用都有一个新的连接。

提前致谢。 最好的问候,

【问题讨论】:

如何判断是否是新连接?通过 var_dumping 资源 id?如果你重新启动你的脚本也是一样的。 我打印了资源 $conn = mysql_connect(xxx);打印 $conn."\n";我知道它可能会被重用,但我不明白叉子的孩子最终如何使用相同的,因为每个孩子打开不同的连接。我正在使用 php 5.3.6 print $conn 只显示 php 资源 ID,而不是任何“连接 ID”。 php 启动时,资源 ID 从 0 开始重新编号。 但是由于我使用的是相同的脚本,唯一的区别是它分叉,它应该每次都返回一个不同的 conn,对吧?每个连接都会有不同的资源ID,不是吗? 没有。每个 fork 都有自己的资源 ID 列表副本,并且始终为 0。它们不在 forks/php 进程之间共享。 【参考方案1】:

您已经设法省略了所有相关代码,但 PHP 中的许多数据库扩展会重用当前打开的连接,除非您明确指示它们不要这样做。如果您使用的是mysql_connect(),请查看$new_link 参数:

mysql_connect — Open a connection to a MySQL Server
Report a bug
Description
resource mysql_connect ([ string $server = ini_get("mysql.default_host") [, string $username = ini_get("mysql.default_user") [, string $password = ini_get("mysql.default_password") [, bool $new_link = false [, int $client_flags = 0 ]]]]] )

Opens or reuses a connection to a MySQL server.

.

新链接

如果第二次调用 mysql_connect() 论点,不会有新的链接 建立,但相反,链接 已打开链接的标识符 将被退回。新链接 参数修改此行为并 使 mysql_connect() 总是打开一个 新链接,即使 mysql_connect() 是 之前用同样的方法调用过 参数。在 SQL 安全模式下,这 参数被忽略。

【讨论】:

$this->conn = mysql_connect($this->_server, $this->_user, $this->_pass, true, MYSQL_CLIENT_COMPRESS);已经有了,这是我的 mysql_connect 行。 phpclasses.org/package/… 我用这个类有我的代码的基础,女巫几乎没有修改。【参考方案2】:

您使用的是sql.safe_mode(检查您的配置文件)吗? mysql_connect 的documentation 表示在这种情况下会忽略 *new_link*。

【讨论】:

它默认是关闭的,我没有启用它。 grep -i sql.safe /etc/php5/apache2/php.ini sql.safe_mode = Off

以上是关于php mysql_connect 资源总是一样的的主要内容,如果未能解决你的问题,请参考以下文章

php连接mysql数据库,报错Function mysql_connect() is deprecated?

PHP-数据库的连接

php连接MySQL分析

如何查看打开了多少 MySQL 连接?

php中@mysql_connect与mysql_connect有什么区别

php总结8——mysql函数库增删改