本文整理匯總了PHP中nzedb\db\Settings::Commit方法的典型用法代碼示例。如果您正苦於以下問題:PHP Settings::Commit方法的具體用法?PHP Settings::Commit怎麽用?PHP Settings::Commit使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類nzedb\db\Settings
的用法示例。
在下文中一共展示了Settings::Commit方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: scan
//.........這裏部分代碼省略.........
if ($collectionID === false) {
if ($addToPartRepair) {
$headersNotInserted[] = $header['Number'];
}
$this->_pdo->Rollback();
$this->_pdo->beginTransaction();
continue;
}
$collectionIDs[$header['CollectionKey']] = $collectionID;
} else {
$collectionID = $collectionIDs[$header['CollectionKey']];
}
$binaryID = $this->_pdo->queryInsert(sprintf("\n\t\t\t\t\t\tINSERT INTO %s (binaryhash, name, collection_id, totalparts, currentparts, filenumber, partsize)\n\t\t\t\t\t\tVALUES (UNHEX('%s'), %s, %d, %d, 1, %d, %d)\n\t\t\t\t\t\tON DUPLICATE KEY UPDATE currentparts = currentparts + 1, partsize = partsize + %d", $tableNames['bname'], md5($matches[1] . $header['From'] . $groupMySQL['id']), $this->_pdo->escapeString(utf8_encode($matches[1])), $collectionID, $matches[3], $fileCount[1], $header['Bytes'], $header['Bytes']));
if ($binaryID === false) {
if ($addToPartRepair) {
$headersNotInserted[] = $header['Number'];
}
$this->_pdo->Rollback();
$this->_pdo->beginTransaction();
continue;
}
$binariesUpdate[$binaryID]['Size'] = 0;
$binariesUpdate[$binaryID]['Parts'] = 0;
$articles[$matches[1]]['CollectionID'] = $collectionID;
$articles[$matches[1]]['BinaryID'] = $binaryID;
} else {
$binaryID = $articles[$matches[1]]['BinaryID'];
$collectionID = $articles[$matches[1]]['CollectionID'];
$binariesUpdate[$binaryID]['Size'] += $header['Bytes'];
$binariesUpdate[$binaryID]['Parts']++;
}
// Strip the < and >, saves space in DB.
$header['Message-ID'][0] = "'";
$partsQuery .= '(' . $binaryID . ',' . $header['Number'] . ',' . rtrim($header['Message-ID'], '>') . "'," . $matches[2] . ',' . $header['Bytes'] . '),';
}
unset($headers);
// Reclaim memory.
// Start of inserting into SQL.
$startUpdate = microtime(true);
// End of processing headers.
$timeCleaning = number_format($startUpdate - $startCleaning, 2);
$binariesQuery = $binariesCheck = sprintf('INSERT INTO %s (id, partsize, currentparts) VALUES ', $tableNames['bname']);
foreach ($binariesUpdate as $binaryID => $binary) {
$binariesQuery .= '(' . $binaryID . ',' . $binary['Size'] . ',' . $binary['Parts'] . '),';
}
$binariesEnd = ' ON DUPLICATE KEY UPDATE partsize = VALUES(partsize) + partsize, currentparts = VALUES(currentparts) + currentparts';
$binariesQuery = rtrim($binariesQuery, ',') . $binariesEnd;
// Check if we got any binaries. If we did, try to insert them.
if (strlen($binariesCheck . $binariesEnd) === strlen($binariesQuery) ? true : $this->_pdo->queryExec($binariesQuery)) {
if ($this->_debug) {
$this->_colorCLI->doEcho($this->_colorCLI->debug('Sending ' . round(strlen($partsQuery) / 1024, 2) . ' KB of parts to MySQL'));
}
if (strlen($partsQuery) === strlen($partsCheck) ? true : $this->_pdo->queryExec(rtrim($partsQuery, ','))) {
$this->_pdo->Commit();
} else {
if ($addToPartRepair) {
$headersNotInserted += $headersReceived;
}
$this->_pdo->Rollback();
}
} else {
if ($addToPartRepair) {
$headersNotInserted += $headersReceived;
}
$this->_pdo->Rollback();
}
if ($this->_echoCLI && $partRepair === false) {
$this->_colorCLI->doEcho($this->_colorCLI->primary('Received ' . count($headersReceived) . ' articles of ' . number_format($last - $first + 1) . ' requested, ' . $headersBlackListed . ' blacklisted, ' . $notYEnc . ' not yEnc.'));
}
// Start of part repair.
$startPR = microtime(true);
// End of inserting.
$timeInsert = number_format($startPR - $startUpdate, 2);
if ($partRepair && count($headersRepaired) > 0) {
$this->removeRepairedParts($headersRepaired, $tableNames['prname'], $groupMySQL['id']);
}
if ($addToPartRepair) {
$notInsertedCount = count($headersNotInserted);
if ($notInsertedCount > 0) {
$this->addMissingParts($headersNotInserted, $tableNames['prname'], $groupMySQL['id']);
$this->log($notInsertedCount . ' articles failed to insert!', __FUNCTION__, Logger::LOG_WARNING, 'warning');
}
// Check if we have any missing headers.
if ($last - $first - $notYEnc - $headersBlackListed + 1 > count($headersReceived)) {
$rangeNotReceived = array_merge($rangeNotReceived, array_diff(range($first, $last), $headersReceived));
}
$notReceivedCount = count($rangeNotReceived);
if ($notReceivedCount > 0) {
$this->addMissingParts($rangeNotReceived, $tableNames['prname'], $groupMySQL['id']);
if ($this->_echoCLI) {
$this->_colorCLI->doEcho($this->_colorCLI->alternate('Server did not return ' . $notReceivedCount . ' articles from ' . $groupMySQL['name'] . '.'), true);
}
}
}
$currentMicroTime = microtime(true);
if ($this->_echoCLI) {
$this->_colorCLI->doEcho($this->_colorCLI->alternateOver($timeHeaders . 's') . $this->_colorCLI->primaryOver(' to download articles, ') . $this->_colorCLI->alternateOver($timeCleaning . 's') . $this->_colorCLI->primaryOver(' to process collections, ') . $this->_colorCLI->alternateOver($timeInsert . 's') . $this->_colorCLI->primaryOver(' to insert binaries/parts, ') . $this->_colorCLI->alternateOver(number_format($currentMicroTime - $startPR, 2) . 's') . $this->_colorCLI->primaryOver(' for part repair, ') . $this->_colorCLI->alternateOver(number_format($currentMicroTime - $startLoop, 2) . 's') . $this->_colorCLI->primary(' total.'));
}
return $returnArray;
}