我想在不同的浏览器标签中运行同一脚本的多个脚本实例。我希望他们有不同的MySQL连接。每一个独特的连接。PHP打开多个连接
我知道mysql_connect
有第四个参数$new_link
应该打开一个新的链接,但即使这样也不会打开一个新的连接。有时候确实如此。
我在Widows机器上安装了XAMPP。
问题是:我如何绝对强制PHP/MySQL为每个脚本实例打开一个新的连接?脚本运行约2分钟。
http://localhost/myscript.php
下面是MySQL的代码的摘录。首先从数据库加载工作任务并将其标记为正在进行中:
public function loadRange() {
try{
$this->db()->query('START TRANSACTION');
$this->row = $this->db()->getObject("
SELECT * FROM {$this->tableRanges}
WHERE
status = " . self::STATUS_READY_FOR_WORK . "
AND domain_id = {$this->domainId}
ORDER BY sort ASC
LIMIT 1");
if(!$this->row) throw new Exception('Could not load range');
$this->db()->update($this->tableRanges, $this->row->id, array(
'thread_id' => $this->id,
'status' => self::STATUS_WORKING,
'run_name' => $this->runName,
'time_started' => time(),
));
$this->db()->query('COMMIT');
} catch(Exception $e) {
$this->db()->query('ROLLBACK');
throw new Exception($e->getMessage());
}
}
然后脚本可能会或可能不会根据其发现的另一个表中插入行。
最后,当任务完成时,分配行再次更新:
$this->db()->update($this->tableRanges, $this->row->id, array(
'status' => self::STATUS_EXECUTED,
'time_finished' => time(),
'count' => $count,
));
尤其是$this->tableRanges
表看起来被锁定。任何想法为什么是这样?它是一个InnoDB表。
每个实例的新连接是标准行为。你是否遇到了一个特定的问题,你正试图寻找解决方案? – castis 2013-04-25 15:05:49