我不知道 PDO 的连接池是如何工作的,而且搜索也无处可去。
首先,为了清楚起见,PDO 的连接池是自动的吗?
如果没有,我如何在 AJAX 页面上使用它?
我已经计算了本地 wampserver 开发人员通过 mysqli 以每 10 毫秒建立数据库连接的时间成本,并且我试图将等待时间尽可能接近 0。这是我最后的问题之一。
我不知道 PDO 的连接池是如何工作的,而且搜索也无处可去。
首先,为了清楚起见,PDO 的连接池是自动的吗?
如果没有,我如何在 AJAX 页面上使用它?
我已经计算了本地 wampserver 开发人员通过 mysqli 以每 10 毫秒建立数据库连接的时间成本,并且我试图将等待时间尽可能接近 0。这是我最后的问题之一。
如果您正在谈论持久连接,请看这里: http: //php.net/manual/en/pdo.connections.php
持久连接是否在不同的 AJAX 请求中保持打开状态?
是的,而且它们永远不会被重复使用的风险。感谢@carefulnow。我将在这里引用他的评论:
持久连接和连接池不是一回事 连接池首先会创建大量连接,然后应用程序只会抓取其中一个已经建立的连接。持久连接确实会建立新连接,但除非明确告知,否则它们不会关闭(正常连接将在脚本结束时关闭)。如果不小心使用持久连接是危险的,因为大多数数据库都实现了最大连接数,并且在命中时会拒绝进一步的连接。在大多数情况下,正常的连接(只需使用 DSN 和登录详细信息调用 PDO 构造函数)就可以了。
我将通过显示 PHP 代码以及 MariaDB 控制台监视器中生成的连接数来解释它。看下面的截图,注意右下角的“run count”。您会看到使用持久连接时,连接不会关闭,而是进入睡眠模式。忽略连接#231,这是控制台监视器的。 http://i.imgur.com/IL42tjF.png,http://i.imgur.com/aDvl7F7.png,http://i.imgur.com/IuFEEvO.png。如您所见,时间列表示不活动的长度,而不是连接的时间长度,因此控制台监视器的时间始终为零,因为我刚刚执行了 SHOW PROCESSLIST;。我希望这能让一切都清楚一点,数据库连接管理有时非常棘手。
所以看截图,问题是开放的,如何再次拾取这些持久连接。StackOverflow 上的一些答案说,它们是在线程级别缓存的,所以如果你有多个线程(这是非常值得期待的),那么你会得到很多连接。这会带来遇到 mysql 连接限制的风险。在使用持久连接之前,请确保您了解它们是如何工作的(我不知道,但似乎 @carefulnow :-))
是否可以将持久连接设置为过期?
PHP doc 说它们被缓存了,因此我认为它们会在一段时间后被清理。
同样在@fabian 提供的同一链接上,您可以看到以下内容:
<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
PDO::ATTR_PERSISTENT => true
));
?>
Note: If you wish to use persistent connections, you must set PDO::ATTR_PERSISTENT in the array of driver options passed to the PDO constructor. If setting this attribute with PDO::setAttribute() after instantiation of the object, the driver will not use persistent connections.
Pdo persistent 使用带有多个 mysql 请求的 any URL 作为一个连接。如果页面重新加载或使用 pdo 连接访问任何其他 php 页面,则只会建立新的 pdo 连接。我们需要已经在服务器中创建的静态 SQL 连接并将其重用于页面。就像页面加载之前的全局声明一样。只能使用带有 express 的 node mysql 包。在 express js 中,我们可以将 mysql 池连接配置为全局声明。
您可以将 nodejs 中的连接池与 mysql 和 express npm modules 一起使用。并在 node 中设置一个 http 服务器,然后在 post 请求中通过http://127.0.0.1:1000/getdata之类的API向表达服务器发出请求。然后使用 php 作为 getter,使用带有流上下文的 file() 方法来创建发布请求。不要使用 curl,因为执行需要更多时间。使用 while 语句检查 express js 服务器返回的数据
这篇文章是我通过手机创建的,所以我无法给出解释代码以供使用。如果有人需要示例代码。我将发布到 GitHub 存储库。分享您的评论