- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我在 GoDaddy (linux) 托管的网站上使用 MySQL 5.0。
我正在对我的网络应用程序进行一些测试,突然我发现页面刷新非常缓慢。最后,经过漫长的等待,我到达了一个页面,上面写着“MySQL 错误,连接太多...”,它指向我连接到数据库的 config.php 文件。
只有我连接到数据库,没有其他用户。在我的每个页面上,我在顶部包含 config.php 文件,并在页面末尾关闭 mysql 连接。中间可能有几个查询。我担心我没有充分关闭 mysql 连接 (mysql_close())。
但是,当我在运行查询后尝试关闭它们时,我在页面上收到连接错误。我的页面是 PHP 和 HTML。当我尝试关闭一个查询时,下一个查询似乎无法连接。我是否必须在关闭后再次包含 config.php 才能连接?
这个错误吓坏了我,因为在 2 周内,大约有 84 人开始使用这个网络应用程序。
谢谢。
编辑:
这是我的页面的一些伪代码:
require_once('../scripts/config.php');
<?php
mysql_query..
if(this button is pressed){
mysql_query...
}
if(this button is pressed){
mysql_query...
}
if(this button is pressed){
mysql_query...
}
?>
some html..
..
..
..
..
<?php
another mysql_query...
?>
some more html..
..
..
<?php mysql_close(); ?>
我想这样,每次打开页面时,都会打开连接,然后在页面加载完成后关闭连接。然后,当有人单击页面上的按钮时,连接会再次打开,依此类推...
编辑:
好的,所以我刚结束与 GoDaddy 的通话。显然,使用我的经济套餐,我一次只能连接 50 个。虽然我今天的问题发生在只有我访问该站点时,但他们说他们早些时候遇到了一些服务器问题。但是,考虑到我的 Web 应用程序将如何拥有 84 个用户,我可能应该升级到“豪华版”,它一次允许 100 个连接。在某一天,一次可能有大约 30 名用户访问我的网站,所以我认为 100 人是一个更安全的赌注。你们同意吗?
最佳答案
共享主机提供商通常允许同一用户同时进行少量连接。
您的代码所做的是:
在页面末尾完成的最后一步不是强制:(引用 mysql_close
的手册):
Using mysql_close() isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution.
但请注意,您可能无论如何都不应该使用持久连接...
两个提示:
mysql_pconnect
中使用 mysql_connect
(你已经可以了)If a second call is made to mysql_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned.
The new_link parameter modifies this behavior and makes mysql_connect() always open a new link, even if mysql_connect() was called before with the same parameters.
那么可能导致问题的原因是什么?
也许您正在尝试并行访问多个页面(例如,使用浏览器中的多个选项卡),这将模拟多个用户同时使用该网站?
如果您有许多用户同时使用该站点,并且 mysql_connect
之间的代码和关闭连接需要很长时间,这意味着同时打开了许多连接。 .. 你会达到极限:-(
不过,由于您是该应用程序的唯一用户,考虑到您最多允许同时连接 200 个连接,因此有些奇怪的事情正在发生...
好吧,想想“连接太多”和“max_connections
”...
如果我没记错的话,max_connections
不限制你可以打开到MySQL服务器的连接数,而是连接总数 可以打开到该服务器,任何连接到它的人。
在 Too many connections 上引用 MySQL 的文档:
If you get a Too many connections error when you try to connect to the mysqld server, this means that all available connections are in use by other clients.
The number of connections allowed is controlled by the max_connections system variable. Its default value is 100. If you need to support more connections, you should set a larger value for this variable.
所以,实际上,问题可能不是来自您或您的代码(实际上看起来不错):它可能“只是”是您不是唯一一个试图连接到该代码的人MySQL 服务器(记住,“共享主机”),而且有太多人同时使用它...
...而且 如果我是对的,那就是这样,您无法解决问题:只要该服务器上的数据库/用户太多并且 max_connection
设置为200,你会继续受苦...
作为旁注:在回到 GoDaddy 询问他们之前,如果有人可以验证我刚才所说的话,那就太好了^^
关于php - MySQL 错误 "Too many connections",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1202322/
我在 JavaScript 文件中运行 PHP,例如...... var = '';). 我需要使用 JavaScript 来扫描字符串中的 PHP 定界符(打开和关闭 PHP 的 )。 我已经知道使
我希望能够做这样的事情: php --determine-oldest-supported-php-version test.php 并得到这个输出: 7.2 也就是说,php 二进制检查 test.
我正在开发一个目前不使用任何框架的大型 php 站点。我的大问题是,随着时间的推移慢慢尝试将框架融入应用程序是否可取,例如在创建的新部件和更新的旧部件中? 比如所有的页面都是直接通过url服务的,有几
下面是我的源代码,我想在同一页面顶部的另一个 php 脚本中使用位于底部 php 脚本的变量 $r1。我需要一个简单的解决方案来解决这个问题。我想在代码中存在的更新查询中使用该变量。 $name)
我正在制作一个网站,根据不同的情况进行大量 PHP 重定向。就像这样...... header("Location: somesite.com/redirectedpage.php"); 为了安全起见
我有一个旧网站,我的 php 标签从 因为短标签已经显示出安全问题,并且在未来的版本中将不被支持。 关于php - 如何避免在 php 文件中写入
我有一个用 PHP 编写的配置文件,如下所示, 所以我想用PHP开发一个接口(interface),它可以编辑文件值,如$WEBPATH , $ACCOUNTPATH和 const值(value)观
我试图制作一个登录页面来学习基本的PHP,首先我希望我的独立PHP文件存储HTML文件的输入(带有表单),但是当我按下按钮时(触发POST到PHP脚本) )我一直收到令人不愉快的错误。 我已经搜索了S
我正在寻找一种让 PHP 以一种形式打印任意数组的方法,我可以将该数组作为赋值包含在我的(测试)代码中。 print_r 产生例如: Array ( [0] => qsr-part:1285 [1]
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: What is the max key size for an array in PHP? 正如标题所说,我想知道
我正在寻找一种让 PHP 以一种形式打印任意数组的方法,我可以将该数组作为赋值包含在我的(测试)代码中。 print_r 产生例如: Array ( [0] => qsr-part:1285 [1]
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我在 MySQL 数据库中有一个表,其中存储餐厅在每个工作日和时段提供的菜单。 表结构如下: i_type i_name i_cost i_day i_start i_
我有两页。 test1.php 和 test2.php。 我想做的就是在 test1.php 上点击提交,并将 test2.php 显示在 div 中。这实际上工作正常,但我需要向 test2.php
我得到了这个代码。我想通过textarea更新mysql。我在textarea中回显我的MySQL,但我不知道如何更新它,我应该把所有东西都放进去吗,因为_GET模式没有给我任何东西,我也尝试_GET
首先,我是 php 的新手,所以我仍在努力学习。我在 Wordpress 上创建了一个表单,我想将值插入一个表(data_test 表,我已经管理了),然后从 data_test 表中获取所有列(id
我有以下函数可以清理用户或网址的输入: function SanitizeString($var) { $var=stripslashes($var); $va
我有一个 html 页面,它使用 php 文件查询数据库,然后让用户登录,否则拒绝访问。我遇到的问题是它只是重定向到 php 文件的 url,并且从不对发生的事情提供反馈。这是我第一次使用 html、
我有一个页面充满了指向 pdf 的链接,我想跟踪哪些链接被单击。我以为我可以做如下的事情,但遇到了问题: query($sql); if($result){
我正在使用 从外部文本文件加载 HTML/PHP 代码 $f = fopen($filename, "r"); while ($line = fgets($f, 4096)) { print $l
我是一名优秀的程序员,十分优秀!