当执行.php文件时,mysql_query命令是以top->底部方式执行的吗?

时间:2012-05-15 15:54:27

标签: php mysql ajax

我正在尝试构建一个为长时间运行的页面加载的进度条(是的索引是明显的解决方案,但目前数据集/模式禁止分区/正确索引)所以我打算在查询注释中使用GUID / uniqueID来跟踪通过ajax使用SHOW_FULL_PROCESSLIST进行编程 - 但如果按顺序执行顺序查询,那么关键在于,有人知道吗?

3 个答案:

答案 0 :(得分:3)

MySQL作为数据库服务器使用多个线程来处理多个正在运行的查询。它在从客户端接收查询时分配一个线程,即PHP连接或ODBC连接等。

但是,既然你提到了mysql_query,我认为你脑子里可以有两件事:

  1. 如果多次调用mysql_query()来传递各种命令,那么在完成上一个查询完成后,MySQL将通过每个查询并将结果返回给PHP。所以,当然MySQL似乎会按顺序工作,尽管它实际上是等待MySQL发送查询的PHP直到一个查询完成。

  2. 在MySQL5和PHP5中有一个名为(mysqli_multi_query())的函数,您可以使用该函数一次将多个查询传递给MySQL,而无需等待1个查询结束。该函数将在同一结果对象中一次性返回所有结果。 MySQL将一次实际使用多线程,在这种情况下,等待时间运行所有的查询基本上是少,你也倾向于使用可更好的为所有的查询将运行独立的线程,服务器资源

答案 1 :(得分:1)

正如巴贝奇曾经说过的那样,“我无法正确地理解那些可能引发这样一个问题的想法混乱。”对mysql_query的调用,如对任何其他函数的调用,按照在程序流程中到达的顺序执行。

答案 2 :(得分:0)

文件中的顺序大多无关紧要。重要的是执行顺序。

<?php

    myCmdFour();
    myCmdTwo();
    myCmdThree();
    myCmdTwo();

    function myCmdTwo() {
        mysql_query(...);
    }

    function myCmdThree() {
        mysql_query(...);
    }

    function myCmdFour() {
        mysql_query(...);
    }

    myCmdFour();
    myCmdThree();
    myCmdTwo();
    myCmdTwo();
?>

虽然任何拥有这样的PHP文件的人都需要认真重新思考。