首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并行MySQL连接关闭临时表

并行MySQL连接关闭临时表
EN

Stack Overflow用户
提问于 2012-03-05 14:22:32
回答 3查看 339关注 0票数 0

我在社区里为我的问题绊倒了,但我找不到解决办法--也许是具体的解决办法。下面是我在PHP中执行的函数/操作的顺序:

  1. 构造class_1对象
  2. 函数在class_1中连接到MySQL,而不需要定义链接标识符。
  3. 然后我在..functions中创建一个临时表class_1,做一些事情。
  4. 调用一个新函数,它创建一个object_2 of class_2
  5. 在object_2中,我使用创建新链接true和链接标识符的参数创建了一个新的MySQL连接。
  6. 我用链接标识符在MySQL中用MySQL_close关闭object_2连接
  7. 在object_1中,临时表仍然不存在/它试图自动重新连接到MySQL

如果我不创建object_2,一切都很好。我做错什么了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-05 20:42:03

感谢大家的帮助找到解决办法。链接标识符解决方案就像前面提到的那样,对我来说有点差。在php.net,对我的问题进行了详细的描述,并给出了一些解决方法:

以下是共享链接的工作方式:-每个链接都是一个资源。默认情况下,mysql_connect()查找具有相同参数的资源。如果存在,它将返回现有资源。-每次将该资源分配给变量时,都会增加资源的引用计数。-当引用递减为零时,基础TCP/套接字连接将关闭。-在该资源之外的变量的每一个赋值都会减少引用计数。(这包括一个超出作用域的函数级变量)- mysql_close()还会减少引用计数。 注意最后两点: mysql_close()和重新分配变量,减少链接的引用计数。

票数 0
EN

Stack Overflow用户

发布于 2012-03-05 14:31:51

这是按计划进行的。来自MySQL文档

“临时桌子 创建表时可以使用临时关键字。临时表仅对当前连接可见,并在连接关闭时自动删除。这意味着两个不同的连接可以使用相同的临时表名,而不会相互冲突,或者使用同名的现有非临时表。(现有表被隐藏,直到删除临时表。)

为了避免这种情况发生,只是不要显式地关闭连接。来自用于mysql_close()的PHP

“使用mysql_close()通常是不必要的,因为非持久性打开的链接在脚本执行结束时会自动关闭。参见释放资源。”

相反,您应该将mysql_connect()返回的连接资源存储在局部变量中,以便当对它的所有引用都超出范围时,PHP垃圾收集器可以自动关闭连接。

票数 0
EN

Stack Overflow用户

发布于 2012-03-05 14:32:38

如何解决您的问题:在class_1中添加一个链接标识符,否则mysql库将使用最后一个库(您已经关闭了)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9568217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档