0

假设 API 服务器从请求访问 SQL 服务器,MySQL 服务器的连接是这样的。

    @mysql_connect(HOSTNAME,DATABASE_USER, DATABASE_PASSWORD) or die('Could not connect to : ' . mysql_error());

    @mysql_select_db(DATABASE_NAME) or die( "<-----------------------Unable to select database------------------>");     

有没有办法检测连接是否已经打开?如果它已打开,则进行 sql 事务。

假设在访问表 A 时,来自外部的另一个 API 请求调用进来并想要访问表 B。

是否可以在表 A 操作仍在进行时启动对表 B 的访问。

换句话说,不要等待访问表 A 完成。一旦访问表 B 进入,然后启动它。

4

1 回答 1

1

@jasonwhite 我相信并发是在 DBMS 级别处理的,根据所讨论的操作,它已经支持同时运行两个操作的可能性。例如,如果操作一是SELECT 操作,操作二是INSERT 操作,则两者都可以同时执行。事实上,无论操作类型如何,这都是可能的,除非表是通过外键约束相关的。这是因为 MySQL 在操作期间实现了表锁定,其中它在对表执行操作时锁定表,然后在操作完成后释放表。

关于检查连接是否已经存在,您需要实现一个单例方法来检查连接是否已经存在。如果没有,则创建并返回它;如果是,则返回现有连接。这看起来像这样:

function getConnection() {
    global $conn; //I do not recommend using globals, rather create a class for this
    if(is_null($conn)) {
         $conn = mysql_connect(HOSTNAME,DATABASE_USER, DATABASE_PASSWORD) or die('Could not connect to : ' . mysql_error());    
         mysql_select_db(DATABASE_NAME) or die( "<-----------------------Unable to select database------------------>");
    }
    return $conn;        
}

AFAIK,您无法进一步控制一个操作是否会在执行期间等待另一个操作。我的 0.02 美元。

于 2012-09-17T09:50:31.450 回答