本文整理汇总了PHP中IDatabase::masterPosWait方法的典型用法代码示例。如果您正苦于以下问题:PHP IDatabase::masterPosWait方法的具体用法?PHP IDatabase::masterPosWait怎么用?PHP IDatabase::masterPosWait使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IDatabase
的用法示例。
在下文中一共展示了IDatabase::masterPosWait方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: safeWaitForMasterPos
/**
* Wait for a slave DB to reach a specified master position
*
* This will connect to the master to get an accurate position if $pos is not given
*
* @param IDatabase $conn Slave DB
* @param DBMasterPos|bool $pos Master position; default: current position
* @param integer $timeout Timeout in seconds
* @return bool Success
* @since 1.27
*/
public function safeWaitForMasterPos(IDatabase $conn, $pos = false, $timeout = 10)
{
if ($this->getServerCount() == 1 || !$conn->getLBInfo('slave')) {
return true;
// server is not a slave DB
}
$pos = $pos ?: $this->getConnection(DB_MASTER)->getMasterPos();
if (!$pos) {
return false;
// something is misconfigured
}
$result = $conn->masterPosWait($pos, $timeout);
if ($result == -1 || is_null($result)) {
$msg = __METHOD__ . ": Timed out waiting on {$conn->getServer()} pos {$pos}";
wfDebugLog('replication', "{$msg}\n");
wfDebugLog('DBPerformance', "{$msg}:\n" . wfBacktrace(true));
$ok = false;
} else {
wfDebugLog('replication', __METHOD__ . ": Done\n");
$ok = true;
}
return $ok;
}
示例2: safeWaitForMasterPos
public function safeWaitForMasterPos(IDatabase $conn, $pos = false, $timeout = 10)
{
if ($this->getServerCount() <= 1 || !$conn->getLBInfo('replica')) {
return true;
// server is not a replica DB
}
if (!$pos) {
// Get the current master position, opening a connection if needed
$masterConn = $this->getAnyOpenConnection($this->getWriterIndex());
if ($masterConn) {
$pos = $masterConn->getMasterPos();
} else {
$masterConn = $this->openConnection($this->getWriterIndex(), self::DOMAIN_ANY);
$pos = $masterConn->getMasterPos();
$this->closeConnection($masterConn);
}
}
if ($pos instanceof DBMasterPos) {
$result = $conn->masterPosWait($pos, $timeout);
if ($result == -1 || is_null($result)) {
$msg = __METHOD__ . ": Timed out waiting on {$conn->getServer()} pos {$pos}";
$this->replLogger->warning("{$msg}");
$ok = false;
} else {
$this->replLogger->info(__METHOD__ . ": Done");
$ok = true;
}
} else {
$ok = false;
// something is misconfigured
$this->replLogger->error("Could not get master pos for {$conn->getServer()}.");
}
return $ok;
}