다른 브라우저 탭에서 같은 스크립트의 여러 스크립트 인스턴스를 실행하고 싶습니다. 그리고 나는 그들에게 다른 MySQL 연결을 갖기를 원합니다. 각각 고유 한 연결.PHP 다중 연결 열기
mysql_connect
에는 새 링크를 열어야하는 제 4 매개 변수 $new_link
이 있지만 그 경우에도 일반적으로 새 연결이 열리지 않습니다. 때로는 그렇습니다.
나는 과부 기계에 XAMPP를 설치했습니다.
질문 : PHP/MySQL이 스크립트의 각 인스턴스에 대해 새로운 연결을 열도록하려면 어떻게해야합니까? 스크립트는 약 2 분 동안 실행됩니다. 여기
http://localhost/myscript.php
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