public function testObjectIndexerPerformance() { if (class_module_system_module::getModuleByName("news") === null) { return; } $arrNewsIds = array(); echo "Indexing without deferred indexer...\n"; class_module_system_changelog::$bitChangelogEnabled = false; $intTimeStart = microtime(true); $intQueriesStart = class_db::getInstance()->getNumber(); for ($intI = 0; $intI < 15; $intI++) { $objNews = new class_module_news_news(); $objNews->setStrTitle("demo 1"); $objNews->setStrIntro("intro demo news"); $objNews->setStrText("text demo news"); $objNews->updateObjectToDb(); $arrNewsIds[] = $objNews->getSystemid(); } echo "Queries pre indexing: ", class_db::getInstance()->getNumber() - $intQueriesStart . " \n"; $objHandler = new class_module_search_request_endprocessinglistener(); $objHandler->handleEvent(class_system_eventidentifier::EVENT_SYSTEM_REQUEST_AFTERCONTENTSEND, array()); $intTimeEnd = microtime(true); $time = $intTimeEnd - $intTimeStart; echo "Object updates: ", sprintf('%f', $time), " sec.\n"; echo "Queries total: ", class_db::getInstance()->getNumber() - $intQueriesStart . " \n"; echo "\nIndexing with deferred indexer...\n"; $objConfig = class_module_system_setting::getConfigByName("_search_deferred_indexer_"); $objConfig->setStrValue("true"); $objConfig->updateObjectToDb(); $intTimeStart = microtime(true); $intQueriesStart = class_db::getInstance()->getNumber(); for ($intI = 0; $intI < 15; $intI++) { $objNews = new class_module_news_news(); $objNews->setStrTitle("demo 1"); $objNews->setStrIntro("intro demo news"); $objNews->setStrText("text demo news"); $objNews->updateObjectToDb(); $arrNewsIds[] = $objNews->getSystemid(); } echo "Queries pre indexing: ", class_db::getInstance()->getNumber() - $intQueriesStart . " \n"; echo "Triggering queue update event...\n"; $objHandler = new class_module_search_request_endprocessinglistener(); $objHandler->handleEvent(class_system_eventidentifier::EVENT_SYSTEM_REQUEST_AFTERCONTENTSEND, array()); $intTimeEnd = microtime(true); $time = $intTimeEnd - $intTimeStart; echo "Object updates: ", sprintf('%f', $time), " sec.\n"; echo "Queries total: ", class_db::getInstance()->getNumber() - $intQueriesStart . " \n"; $objConfig = class_module_system_setting::getConfigByName("_search_deferred_indexer_"); $objConfig->setStrValue("false"); $objConfig->updateObjectToDb(); foreach ($arrNewsIds as $strNewsId) { class_objectfactory::getInstance()->getObject($strNewsId)->deleteObjectFromDatabase(); } }
/** * Triggered as soon as a record is updated * * @param string $strEventName * @param array $arrArguments * * @return bool */ public function handleEvent($strEventName, array $arrArguments) { $objRecord = $arrArguments[0]; if (self::$BIT_UPDATE_INDEX_ON_END_OF_REQUEST) { class_module_search_request_endprocessinglistener::addIdToIndex($objRecord); } else { $objIndex = new class_module_search_indexwriter(); $objIndex->indexObject($objRecord); } return true; }
/** * @param string $strEventName * @param array $arrArguments * * @return bool */ public function handleEvent($strEventName, array $arrArguments) { //unwrap arguments list($strSystemid, $strSourceClass) = $arrArguments; if (self::$BIT_UPDATE_INDEX_ON_END_OF_REQUEST) { class_module_search_request_endprocessinglistener::addIdToDelete($strSystemid); return true; } else { $objIndex = new class_module_search_indexwriter(); return $objIndex->removeRecordFromIndex($strSystemid); } }
/** * @param string $strEventName * @param array $arrArguments * * @return bool */ public function handleEvent($strEventName, array $arrArguments) { if (count(self::$arrToDelete) == 0 && count(self::$arrToIndex) == 0) { return true; } //clean and reduce arrays to avoid logical duplicates foreach (self::$arrToDelete as $strOneId => $strObject) { if (isset(self::$arrToIndex[$strOneId])) { unset(self::$arrToIndex[$strOneId]); } } $strConfigValue = class_module_system_setting::getConfigValue("_search_deferred_indexer_"); if ($strConfigValue !== null && $strConfigValue == "true") { $this->processDeferred(); } else { $this->processDirectly(); } self::$arrToDelete = array(); self::$arrToIndex = array(); return true; }