ini_set("max_execution_time", "-1"); logger::log("SearchPhp_Plugin: Starting crawl", Zend_Log::DEBUG); //TODO nix specific exec("rm -Rf " . str_replace("/index", "/tmpindex", $indexDir) . " " . $indexDir); $confArray = SearchPhp_Plugin::getSearchConfigArray(); $urls = explode(",", $confArray['search']['frontend']['urls']); $validLinkRegexes = explode(",", $confArray['search']['frontend']['validLinkRegexes']); $invalidLinkRegexes = explode(",", $confArray['search']['frontend']['invalidLinkRegexes']); $rawConfig = new Zend_Config_Xml(PIMCORE_PLUGINS_PATH . SearchPhp_Plugin::$configFile); $rawConfigArray = $rawConfig->toArray(); $rawConfigArray['search']['frontend']['crawler']['running'] = 1; $rawConfigArray['search']['frontend']['crawler']['started'] = time(); $config = new Zend_Config($rawConfigArray, true); $writer = new Zend_Config_Writer_Xml(array("config" => $config, "filename" => PIMCORE_PLUGINS_PATH . SearchPhp_Plugin::$configFile)); $writer->write(); $crawler = new SearchPhp_Frontend_Crawler($validLinkRegexes, $invalidLinkRegexes, 10, 30, $confArray['search']['frontend']['crawler']['contentStartIndicator'], $confArray['search']['frontend']['crawler']['contentEndIndicator']); $crawler->findLinks($urls); $rawConfig = new Zend_Config_Xml(PIMCORE_PLUGINS_PATH . SearchPhp_Plugin::$configFile); $rawConfigArray = $rawConfig->toArray(); $rawConfigArray['search']['frontend']['crawler']['running'] = 0; $rawConfigArray['search']['frontend']['crawler']['finished'] = time(); $config = new Zend_Config($rawConfigArray, true); $writer = new Zend_Config_Writer_Xml(array("config" => $config, "filename" => PIMCORE_PLUGINS_PATH . SearchPhp_Plugin::$configFile)); $writer->write(); logger::log("SearchPhp_Plugin: replacing old index ...", Zend_Log::DEBUG); $indexDir = SearchPhp_Plugin::getFrontendSearchIndex(); //TODO nix specific exec("rm -Rf " . $indexDir); exec("mv " . str_replace("/index", "/tmpindex", $indexDir) . " " . $indexDir); logger::log("Search_PluginPhp: replaced old index", Zend_Log::DEBUG); logger::log("Search_PluginPhp: Finished crawl", Zend_Log::DEBUG);
/** * @param $configArray * @return void */ public function frontendCrawl($configArray = null) { if (!is_array($configArray)) { $configArray = self::getSearchConfigArray(); } if (self::frontendConfigComplete()) { ini_set('memory_limit', '2048M'); ini_set("max_execution_time", "-1"); $indexDir = self::getFrontendSearchIndex(); if ($indexDir) { //TODO nix specific exec("rm -Rf " . str_replace("/index/", "/tmpindex", $indexDir)); logger::debug("rm -Rf " . str_replace("/index/", "/tmpindex", $indexDir)); try { $urls = explode(",", $configArray['search']['frontend']['urls']); $validLinkRegexes = explode(",", $configArray['search']['frontend']['validLinkRegexes']); $invalidLinkRegexesSystem = $configArray['search']['frontend']['invalidLinkRegexes']; $invalidLinkRegexesEditable = $configArray['search']['frontend']['invalidLinkRegexesEditable']; if (!empty($invalidLinkRegexesEditable) and !empty($invalidLinkRegexesSystem)) { $invalidLinkRegexes = explode(",", $invalidLinkRegexesEditable . "," . $invalidLinkRegexesSystem); } else { if (!empty($invalidLinkRegexesEditable)) { $invalidLinkRegexes = explode(",", $invalidLinkRegexesEditable); } else { if (!empty($invalidLinkRegexesSystem)) { $invalidLinkRegexes = explode(",", $invalidLinkRegexesSystem); } else { $invalidLinkRegexes = array(); } } } self::setCrawlerState("frontend", "started", true); $maxLinkDepth = $configArray['search']['frontend']['crawler']['maxLinkDepth']; if (is_numeric($maxLinkDepth) and $maxLinkDepth > 0) { $crawler = new SearchPhp_Frontend_Crawler($validLinkRegexes, $invalidLinkRegexes, 10, 30, $configArray['search']['frontend']['crawler']['contentStartIndicator'], $configArray['search']['frontend']['crawler']['contentEndIndicator'], $configArray['search']['frontend']['crawler']['maxThreads'], $maxLinkDepth); } else { $crawler = new SearchPhp_Frontend_Crawler($validLinkRegexes, $invalidLinkRegexes, 10, 30, $configArray['search']['frontend']['crawler']['contentStartIndicator'], $configArray['search']['frontend']['crawler']['contentEndIndicator'], $configArray['search']['frontend']['crawler']['maxThreads']); } $crawler->findLinks($urls); self::setCrawlerState("frontend", "finished", false); logger::debug("SearchPhp_Plugin: replacing old index ..."); $db = Pimcore_Resource_Mysql::get(); $db->query("DROP TABLE IF EXISTS `plugin_searchphp_contents`;"); $db->query("RENAME TABLE `plugin_searchphp_contents_temp` TO `plugin_searchphp_contents`;"); //TODO nix specific exec("rm -Rf " . $indexDir); logger::debug("rm -Rf " . $indexDir); $tmpIndex = str_replace("/index", "/tmpindex", $indexDir); exec("cp -R " . substr($tmpIndex, 0, -1) . " " . substr($indexDir, 0, -1)); logger::debug("cp -R " . substr($tmpIndex, 0, -1) . " " . substr($indexDir, 0, -1)); logger::debug("SearchPhp_Plugin: replaced old index"); logger::info("SearchPhp_Plugin: Finished crawl"); } catch (Exception $e) { logger::err($e); throw $e; } } } else { logger::info("SearchPhp_Plugin: Did not start frontend crawler, because config incomplete"); } }