关于mySQL和PHP的初学者问题,避免在每个页面上连接到DB
我编写了一个简单的php/mysql网页,有page1.php、page2.php等等。因为我在每个页面(或者至少90%的页面)上都使用了数据库,所以我将标准放在它们的顶部关于mySQL和PHP的初学者问题,避免在每个页面上连接到DB,php,mysql,sql,Php,Mysql,Sql,我编写了一个简单的php/mysql网页,有page1.php、page2.php等等。因为我在每个页面(或者至少90%的页面)上都使用了数据库,所以我将标准放在它们的顶部 mysql_connect("localhost"," "," "); mysql_select_db(" "); . . mysql_close(); 有我的疑问 我的问题是,我真的需要在每个页面上连接到数据库,还是有什么方法可以避免这种情况并保持连接?一些页面链接到其他页面,我可以利用会话发布一些变量,但我的问题是更全
mysql_connect("localhost"," "," ");
mysql_select_db(" ");
.
.
mysql_close();
有我的疑问
我的问题是,我真的需要在每个页面上连接到数据库,还是有什么方法可以避免这种情况并保持连接?一些页面链接到其他页面,我可以利用会话发布一些变量,但我的问题是更全球化的内容。您可以使用持久连接,尽管它不会对您有多大帮助,正确操作可能会很痛苦。在每个页面上进行连接几乎更好,尤其是当数据库服务器与php服务器运行在同一台机器上时。web本质上是在断开连接的状态下工作的。也就是说,您不知道客户是否会再次提出请求 无论如何,您绝对希望在每个页面上连接/断开与数据库的连接。这是确保您没有泄漏连接和站点保持响应的唯一方法 大多数系统都内置了处理连接池的方法,这使得请求新连接的动作非常快,因此您不必担心。尝试使用
mysql_pconnect()
来自PHP.net
“与mysql_connect()非常相似,但有两个主要区别
首先,在连接时,函数将首先尝试查找已使用相同主机、用户名和密码打开的(持久)链接。如果找到,将返回该链接的标识符,而不是打开新连接
其次,在脚本执行结束时,与SQL server的连接不会关闭。相反,链接将保持打开状态以供将来使用(mysql_close()不会关闭mysql_pconnect()建立的链接)。”如果你只是想让它成为你不需要硬编码到每个文件的顶部,在一个文件中写下连接代码,然后使用
require/path/to/file/name.php
,它会在每次都建立它。注意:它可能是include而不是require。这不是OP要求的。我没有正确阅读它,但是对这篇文章投反对票似乎有点过头了,我可以评论一下,我已经纠正了。虽然我没有投反对票,但它的目的是让社区简单地说这篇文章是否有用;而最初的答案不是。认为这是一个教训,花时间去理解一个给定的问题,然后开枪。此外,我刚刚对当前的答案投了更高的票,因为这是一个好答案。我觉得很犹豫是否将此推荐给不理解其含义的人。无论如何,您仍然需要显式调用mysql_connect,即使使用持久连接。仍然需要建立脚本->连接池链接。持久连接只需保持PHP模块->mysql链接的活动状态。感谢您的支持,我想我必须继续使用include()
,因为正如您所说,这很复杂。除非您真正了解持久连接的工作原理,否则不要使用它们。人们经常使用这些,因为这“似乎”是个好主意,最终导致MySQL服务器缺少连接插槽。+1表示“这对您没有多大帮助”。看起来开销很大,但MySQL为此进行了高度优化。许多高流量网站使用这种方法。您将要执行的查询比建立连接本身消耗更多的资源和时间。持久连接是地狱。所以我想,拥有一个include()
对我来说是最好的解决方案。@Nikolai:是的。这是在PHP中执行数据库访问的最常见的方法之一。@Chris Lively感谢我在以前的项目中这样做过,因为我讨厌每次都对SQL连接进行硬编码,这样更易于维护。