0

这本身并不是一个真正的问题,而更多的是关于效率的问题。

基本上,我有一个 index.php 文件来处理我正在构建的站点的主要代码。该代码中有几个 JavaScript/JQuery 函数,它们使用 $.ajax() 来处理使用其他 php 文件的数据。

我使用了两个与 MySQL 数据库交互的函数(注意这些不是完全实现的函数)。

一种用于更新数据库:

    function updateDB(text) {
        $.ajax({
                url: "update_db.php",
                type: "POST",
                data: {text:text},
        });
    }

一个用于从数据库中获取信息:

    function displayText() {
        $.ajax({
                url: "display_text.php",
                type: "POST",
                data: {},
        });
    }

在两个文件(“update_db.php”和“display_text.php”)的顶部,我包含了一个使用 PDO 连接到数据库的 .php 文件:

<?php require_once('connect_to_db.php'); ?>

但是,这似乎效率低下,因为当我运行我的 index.php 文件时,数据库被访问了两次,一次用于更新数据库,一次用于显示数据库的内容。

我的问题是:两次连接数据库有什么缺点吗?我的假设是,这会使数据库操作陷入困境并且执行函数的速度会变慢。

如果有缺点,有没有办法只连接到数据库一次,即使主 index.php 调用两个不同的文件,每个文件都必须连接到数据库?

我的主要兴趣是学习如何编写更高效的代码,以及就如何使文件处理等事情更高效获得意见。欢迎任何建议!

4

3 回答 3

1

两次连接到数据库并没有真正的问题(如果您在两个单独的请求中这样做,这是必须的)。

如果 update_db.php 总是后跟 display_text.php 调用,则您可以通过让 update_db.php 返回 display_text.php 通常会发送的数据来消除页面中的请求之一。

于 2013-06-17T20:08:29.580 回答
0

如果您使用持久连接,我认为不会有问题。

如果您想编写更高效的代码,请尝试在页面末尾的 1 次调用中使用单个 ajax 调用来处理所有代码。获取然后更新(或您需要做的任何事情)。

于 2013-06-17T20:08:53.307 回答
0

您可以使用持久连接,但您可以在此处查看更多详细信息,这是一个非常糟糕的主意:在 PDO 中使用持久连接的缺点是什么

如果你考虑性能,你应该考虑很多事情,比如你应该使用 include 而不是 include_once 或......在这里查看http://seeit.org/2010/06/11/php-the-include-include_once-performance -辩论/

对于您的问题,我认为您应该选择其中一种解决方案

  1. 使用单独的请求来使用异步优势(对于这个解决方案,我提供使用使用行阻塞的 InnoDb 引擎,而不是像 MyIsam 那样使用表阻塞)
  2. 使用单个请求来获取最低 Mysql 使用率,有关更多信息,连接到 mysql 并在我的服务器中选择数据库需要 50-300 毫秒,您可以通过单个请求节省这段时间。
于 2013-06-17T20:25:49.507 回答