我有一个普通的网站。它使用PHP来调用MySQL表。为了节省一直输入,我include()
一个connect.php
文件,在每个页面上为我连接数据库。该网站不断获得太多的连接"错误。在这样的页面开头连接是一个坏主意吗?
每次PHP脚本需要时,我是否应该创建一个新连接,然后在该脚本完成后用mysql_close关闭该连接?我曾经避免这样做,因为它会在网站上添加重复的代码行,但我想知道这是否是导致问题的原因?
所以目前我的代码与此相似:
<?php
include("connect.php"); //connects to database using mysql_connect() function
...
PHP script that calls mysql
...
another PHP script that calls mysql
?>
我应该把它改成这样的吗?
<?php
mysql_connect('host', 'username', 'password');
mysql_select_db('db');
PHP code that calls mysql
mysql_close();
...
mysql_connect('host', 'username', 'password');
mysql_select_db('db');
more PHP code that calls mysql
mysql_close();
?>
答案 0 :(得分:2)
答案 1 :(得分:1)
每次PHP脚本需要时都应该创建一个新连接[...]?
是的,这是最有意义的,特别是如果不是每个页面都需要mysql连接。
在PHP中,这可以通过在php.ini
文件中设置数据库凭据来实现,只需调用mysql_select_db
,如果到目前为止没有连接,它将自动连接到已配置的数据库。
如果您编写新代码,请将数据库连接封装在自己的对象中,这样您就可以在连接数据库时进行更细粒度的控制。
现代框架(例如 Silex )允许您延迟加载此类中央组件(服务),因此您已配置它们并可在需要时使用它们但您不必担心资源(例如示例中的连接限制)。
[...]在脚本完成后关闭与mysql_close的连接?
你通常不需要这样,因为PHP会为你做这件事。
答案 2 :(得分:0)
我认为这种编码方式没有任何问题。这一切都取决于你正在写什么样的应用程序。只要确保你检查好你的脚本并避免任何错误,你应该没问题。 这就是我通常做的事情
<?php session_start(); include "inc/config.php";
//require_once('chartz/lib/idiorm.php');
if ($_SESSION["login1"]== "Superadmin" or $_SESSION["login1"]== "User" or $_SESSION["login1"]=="Administrator")
{
$snames = $_SESSION["name1"];
$id = $_SESSION["id1"];
$stype = $_SESSION["login1"];
$stokperm = $_SESSION['stokperm'];
$navtype = $_GET['nav'];
include("inc/ps_pagination.php");
}
else
{
header ("location: ../../../index.php");
}
?>
我不是说它是最好的方式,我们都还在学习......
我也非常认真地对待blue112的建议。我的大多数应用程序都是以旧式方式编写的,但使用mysqli_ *或PDO是可行的方法。