Php 与AJAX异步使用MySQL的性能问题

Php 与AJAX异步使用MySQL的性能问题,php,jquery,ajax,performance,pdo,Php,Jquery,Ajax,Performance,Pdo,这本身并不是一个真正的问题,但更多的是一个关于效率的问题 基本上,我有一个index.php文件,用于处理我正在构建的站点的主代码。在这些代码中有几个JavaScript/JQuery函数,它们使用$.ajax()处理使用其他php文件的数据 我使用了两个与MySQL数据库交互的函数(注意,这些函数不是完全实现的函数) 一个用于更新数据库: function updateDB(text) { $.ajax({ url: "update_db

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

基本上,我有一个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: {},
        });
    }
还有一个用于从数据库获取信息:

    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文件时,数据库被访问了两次,一次用于更新数据库,一次用于显示数据库内容

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

如果存在缺陷,是否有一种方法可以只连接到数据库一次,即使main index.php调用两个不同的文件,每个文件都必须连接到数据库


我主要感兴趣的是学习如何编写更高效的代码,以及如何使文件处理更高效。欢迎提出任何建议

两次连接到数据库没有实际问题(如果在两个单独的请求中进行连接,则必须这样做)


如果update_db.php后面总是跟着display_text.php调用,则update_db.php可能会返回display_text.php通常会发送的数据,从而消除页面中的一个请求

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


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

您可以使用持久连接,但这确实是个坏主意,您可以在此处查看更多详细信息:

如果你考虑性能,你应该考虑很多事情,比如你应该使用include和notinclude\u,或者。。。检查这里

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

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

  • 如果您发出两个单独的请求,则必须连接两次。如果您将这两个请求合并为一个请求,则只需连接一次即可。在页面的生命周期中,执行多个ajax请求返回服务器并不少见,只要请求不是很重。显然,只做一个会更有效,但是将它分成两个可能会更易于维护,就像您现在拥有的一样。我建议使用更易于维护的方法,除非性能成为一个问题。还可以看看设计模式,比如模型-视图-控制器。模式将帮助您编写更高效的代码。谢谢您的建议!我有点熟悉MVC模式,但还没有在很大程度上使用它。我试图将两者分开,因为它们并不总是一起使用。将布尔变量传递给ajax脚本是个好主意吗?类似于“如果(已建立连接){}其他{//make connection}”的内容?