Esempio n. 1
0
        if (isset($lastLogs[$dc])) {
            $serverLastLog = $lastLogs[$dc];
            if ($serverLastLog->getLastLogId() >= $sphinxLog->getId()) {
                KalturaLog::debug('Last log id [' . $serverLastLog->getLastLogId() . "] dc [{$dc}] is larger than id [" . $sphinxLog->getId() . "]");
                continue;
            }
        } else {
            $serverLastLog = new SphinxLogServer();
            $serverLastLog->setServer($sphinxServer);
            $serverLastLog->setDc($dc);
            $lastLogs[$dc] = $serverLastLog;
        }
        try {
            $sql = $sphinxLog->getSql();
            $affected = $sphinxCon->exec($sql);
            if (!$affected) {
                $errorInfo = $sphinxCon->errorInfo();
                //				if(!preg_match('/^duplicate id/', $errorInfo[2]))
                //					die("No affected records [" . $sphinxCon->errorCode() . "]\n" . print_r($sphinxCon->errorInfo(), true));
            }
            $serverLastLog->setLastLogId($sphinxLog->getId());
            $serverLastLog->save(myDbHelper::getConnection(myDbHelper::DB_HELPER_CONN_SPHINX_LOG));
        } catch (Exception $e) {
            KalturaLog::err($e->getMessage());
        }
    }
    unset($sphinxCon);
    SphinxLogPeer::clearInstancePool();
    $sphinxLogs = SphinxLogPeer::retrieveByLastId($lastLogs);
}
KalturaLog::log('Done');
Esempio n. 2
0
$gap = 500;
// The gap from 'getLastLogId' we want to query
$sphinxReadConn = myDbHelper::getConnection(myDbHelper::DB_HELPER_CONN_SPHINX_LOG_READ);
$serverLastLogs = SphinxLogServerPeer::retrieveByServer($sphinxServer, $sphinxReadConn);
$lastLogs = array();
$handledRecords = array();
foreach ($serverLastLogs as $serverLastLog) {
    $lastLogs[$serverLastLog->getDc()] = $serverLastLog;
    $handledRecords[$serverLastLog->getDc()] = array();
}
while (true) {
    $sphinxLogs = SphinxLogPeer::retrieveByLastId($lastLogs, $gap, $limit, $handledRecords, $sphinxReadConn);
    while (!count($sphinxLogs)) {
        $skipExecutedUpdates = true;
        sleep(1);
        $sphinxLogs = SphinxLogPeer::retrieveByLastId($lastLogs, $gap, $limit, $handledRecords, $sphinxReadConn);
    }
    $sphinxCon = null;
    try {
        $sphinxCon = DbManager::createSphinxConnection($sphinxServer, $sphinxPort);
    } catch (Exception $e) {
        KalturaLog::err($e->getMessage());
        sleep(5);
        continue;
    }
    foreach ($sphinxLogs as $sphinxLog) {
        /* @var $sphinxLog SphinxLog */
        $dc = $sphinxLog->getDc();
        $executedServerId = $sphinxLog->getExecutedServerId();
        $sphinxLogId = $sphinxLog->getId();
        $serverLastLog = null;