call_user_func(array($peerName, 'setUseCriteriaFilter'), false);
for (;;) {
    $c = new Criteria();
    if ($partnerId != -1) {
        $c->add($partnerIdField, $partnerId);
    }
    if ($lastCreatedAt) {
        $c->add($createdAtField, $lastCreatedAt, Criteria::LESS_EQUAL);
    }
    $c->addDescendingOrderByColumn($createdAtField);
    $c->setLimit(500);
    $items = call_user_func(array($peerName, 'doSelect'), $c);
    foreach ($items as $item) {
        usleep(100);
        if ($mode == 'execute') {
            $sphinx->saveToSphinx($item, false, true);
            echo $item->getId() . "Saved\n";
        } else {
            print $sphinx->getSphinxSaveSql($item, false, true) . ';' . PHP_EOL;
        }
        $lastCreatedAt = $item->getCreatedAt(null);
    }
    sleep(10);
    kMemoryManager::clearMemory();
    if (count($items) < 500) {
        break;
    }
}
if ($mode == 'execute') {
    echo "Done\n";
}
    if (is_null($entry)) {
        KalturaLog::err('Couldn\'t find entry [' . $entryId . ']');
        continue;
    }
    if ($entry->getViews() != $views || $entry->getPlays() != $plays) {
        $entry->setViews($views);
        $entry->setPlays($plays);
        KalturaLog::debug('Successfully saved entry [' . $entryId . ']');
        try {
            // update entry without setting the updated at
            $updateSql = "UPDATE entry set views='{$views}',plays='{$plays}' WHERE id='{$entryId}'";
            $stmt = $connection->prepare($updateSql);
            $stmt->execute();
            $affectedRows = $stmt->rowCount();
            KalturaLog::log("AffectedRows: " . $affectedRows);
            // update sphinx log directly
            $sql = $sphinxMgr->getSphinxSaveSql($entry, false);
            $sphinxLog = new SphinxLog();
            $sphinxLog->setEntryId($entryId);
            $sphinxLog->setPartnerId($entry->getPartnerId());
            $sphinxLog->setSql($sql);
            $sphinxLog->save(myDbHelper::getConnection(myDbHelper::DB_HELPER_CONN_SPHINX_LOG));
        } catch (Exception $e) {
            KalturaLog::log($e->getMessage(), Propel::LOG_ERR);
        }
    }
    $count++;
    if ($count % 500 === 0) {
        entryPeer::clearInstancePool();
    }
}
error_reporting(E_ALL);
$dbConf = kConf::getDB();
DbManager::setConfig($dbConf);
DbManager::initialize();
$availModes = array('gensqls', 'execute');
if ($argc < 2) {
    die('Usage: ' . basename(__FILE__) . ' <entry id> [<mode: ' . implode('/', $availModes) . '>]' . PHP_EOL);
}
$entryId = @$argv[1];
$mode = 'execute';
if ($argc > 2) {
    $mode = $argv[2];
}
if (!in_array($mode, $availModes)) {
    die('Invalid mode, should be one of ' . implode(',', $availModes) . PHP_EOL);
}
$dbConf = kConf::getDB();
DbManager::setConfig($dbConf);
DbManager::initialize();
$sphinx = new kSphinxSearchManager();
entryPeer::setUseCriteriaFilter(false);
$entry = entryPeer::retrieveByPK($entryId);
if ($entry) {
    if ($mode == 'execute') {
        $sphinx->saveToSphinx($entry, false, true);
        echo $entry->getId() . "Saved\n";
    } else {
        print $sphinx->getSphinxSaveSql($entry, false, true) . PHP_EOL;
    }
}
echo "Done\n";