本文整理汇总了PHP中IDatabase::commit方法的典型用法代码示例。如果您正苦于以下问题:PHP IDatabase::commit方法的具体用法?PHP IDatabase::commit怎么用?PHP IDatabase::commit使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IDatabase
的用法示例。
在下文中一共展示了IDatabase::commit方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: write
/**
* @param array $updates Array of arrays each containing two keys, 'primaryKey'
* and 'changes'. primaryKey must contain a map of column names to values
* sufficient to uniquely identify the row changes must contain a map of column
* names to update values to apply to the row.
*/
public function write(array $updates)
{
$this->db->begin();
foreach ($updates as $update) {
$this->db->update($this->table, $update['changes'], $update['primaryKey'], __METHOD__);
}
$this->db->commit();
wfGetLBFactory()->waitForReplication();
}
示例2: write
/**
* @param array $updates Array of arrays each containing two keys, 'primaryKey'
* and 'changes'. primaryKey must contain a map of column names to values
* sufficient to uniquely identify the row changes must contain a map of column
* names to update values to apply to the row.
*/
public function write(array $updates)
{
$this->db->begin();
foreach ($updates as $update) {
$this->db->update($this->table, $update['changes'], $update['primaryKey'], __METHOD__);
}
$this->db->commit();
wfWaitForSlaves(false, false, $this->clusterName);
}
示例3: commitTransaction
/**
* Commit the transcation on a DB handle and wait for slaves to catch up
*
* This method makes it clear that commit() is called from a maintenance script,
* which has outermost scope. This is safe, unlike $dbw->commit() called in other places.
*
* @param IDatabase $dbw
* @param string $fname Caller name
* @return bool Whether the slave wait succeeded
* @since 1.27
*/
protected function commitTransaction(IDatabase $dbw, $fname)
{
$dbw->commit($fname);
$ok = wfWaitForSlaves($this->lastSlaveWait, false, '*', 30);
$this->lastSlaveWait = microtime(true);
return $ok;
}
示例4: doBatchPushInternal
/**
* This function should *not* be called outside of JobQueueDB
*
* @param IDatabase $dbw
* @param array $jobs
* @param int $flags
* @param string $method
* @throws DBError
* @return void
*/
public function doBatchPushInternal(IDatabase $dbw, array $jobs, $flags, $method)
{
if (!count($jobs)) {
return;
}
$rowSet = array();
// (sha1 => job) map for jobs that are de-duplicated
$rowList = array();
// list of jobs for jobs that are not de-duplicated
foreach ($jobs as $job) {
$row = $this->insertFields($job);
if ($job->ignoreDuplicates()) {
$rowSet[$row['job_sha1']] = $row;
} else {
$rowList[] = $row;
}
}
if ($flags & self::QOS_ATOMIC) {
$dbw->begin($method);
// wrap all the job additions in one transaction
}
try {
// Strip out any duplicate jobs that are already in the queue...
if (count($rowSet)) {
$res = $dbw->select('job', 'job_sha1', array('job_sha1' => array_keys($rowSet), 'job_token' => ''), $method);
foreach ($res as $row) {
wfDebug("Job with hash '{$row->job_sha1}' is a duplicate.\n");
unset($rowSet[$row->job_sha1]);
// already enqueued
}
}
// Build the full list of job rows to insert
$rows = array_merge($rowList, array_values($rowSet));
// Insert the job rows in chunks to avoid slave lag...
foreach (array_chunk($rows, 50) as $rowBatch) {
$dbw->insert('job', $rowBatch, $method);
}
JobQueue::incrStats('inserts', $this->type, count($rows));
JobQueue::incrStats('dupe_inserts', $this->type, count($rowSet) + count($rowList) - count($rows));
} catch (DBError $e) {
if ($flags & self::QOS_ATOMIC) {
$dbw->rollback($method);
}
throw $e;
}
if ($flags & self::QOS_ATOMIC) {
$dbw->commit($method);
}
return;
}
示例5: commitTransaction
/**
* Commit a transcation on a DB
*
* This method makes it clear that commit() is called from a maintenance script,
* which has outermost scope. This is safe, unlike $dbw->commit() called in other places.
*
* @param IDatabase $dbw
* @param string $fname Caller name
* @since 1.27
*/
protected function commitTransaction(IDatabase $dbw, $fname)
{
$dbw->commit($fname);
}
示例6: commitTransaction
/**
* Commit the transcation on a DB handle and wait for replica DBs to catch up
*
* This method makes it clear that commit() is called from a maintenance script,
* which has outermost scope. This is safe, unlike $dbw->commit() called in other places.
*
* @param IDatabase $dbw
* @param string $fname Caller name
* @return bool Whether the replica DB wait succeeded
* @since 1.27
*/
protected function commitTransaction(IDatabase $dbw, $fname)
{
$dbw->commit($fname);
try {
$lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
$lbFactory->waitForReplication(['timeout' => 30, 'ifWritesSince' => $this->lastReplicationWait]);
$this->lastReplicationWait = microtime(true);
return true;
} catch (DBReplicationWaitError $e) {
return false;
}
}