【问题标题】:Performance questions for using MySQL asynchronously with AJAX使用 AJAX 异步使用 MySQL 的性能问题
【发布时间】:2013-06-17 20:03:19
【问题描述】:

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

基本上,我有一个 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 调用两个不同的文件,每个文件都必须连接到数据库?

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

【问题讨论】:

  • 如果您发出两个单独的请求,则必须连接两次。如果您将这两个请求合并为一个,则只需连接一次。只要请求不是很重,在页面的生命周期内向服务器执行多个 ajax 请求并不少见。显然,只做一个更有效,但是像你现在拥有的那样将它分成两部分可能更易于维护。我建议使用更易于维护的方法,除非性能成为问题。
  • 还可以看看模型视图控制器MVC等设计模式。模式将帮助您编写更高效的代码。
  • 感谢您的建议!我对 MVC 模式有点熟悉,但没有大量使用它。

标签: php jquery ajax performance pdo


【解决方案1】:

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

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

【讨论】:

  • 我试图将两者分开,因为它们并不总是一起使用。将布尔变量传递给 ajax 脚本是个好主意吗?类似于“if (a connection has been made) {} else { //make connection }” ?
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    您可以使用持久连接,但您可以在此处查看更多详细信息:What are the disadvantages of using persistent connection in PDO

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多