| Server IP : 104.21.17.213 / Your IP : 216.73.217.141 Web Server : Apache System : Linux hosting01.arsenalhost.com 4.18.0-425.13.1.lve.el8.x86_64 #1 SMP Mon Feb 27 15:23:24 EST 2023 x86_64 User : corbizre ( 1013) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/corbizre/gotofindhomes.com3/components/Solr/Controllers/ |
Upload File : |
<?php
/**
* Documentation
* @author leonid
* @category
* @package
* @subpackage
* @copyright Copyright (c) 2005-2013 ITCrimea Ukraine Inc. (http://www.itcrimea.com)
* @license
*/
class Solr_IndexController extends System_Controller_Base
{
/**
* import houses data from mysql db to solr
*/
public function indexAction() {
if (!defined('REAL_ESTATE_CRON'))
throw new Exception('Unable to run script directly from browser');
// 2 days
set_time_limit(2 * 60 * 60 * 24);
$fp = fopen(Zend_Registry::get('AppFolder').'/logs/import-solr.log', 'w');
fwrite($fp, 'Start Solr import ' . date('Y-m-d H:i:s') . "\r\n");
$cfgSolr = System_Components::getComponentConfig('Solr');
$objSolrData = new Solr_Data();
$tblHouses = new RealEstate_House_Table();
$select = $tblHouses->select();
$select->where('ID > ?', $cfgSolr->import->start_id);
$select->where('DateUpdated > ?', $cfgSolr->import->min_date);
$select->order('ID ASC');
$limit_start = 0;
$limit_len = 50;
$select->limit($limit_len, $limit_start);
$listHouses = $tblHouses->fetchAll($select);
$total_number = 0;
$errors_number = 0;
while ($listHouses->count() > 0) {
foreach ($listHouses as $currHouse) {
fwrite($fp, $currHouse->ID);
try {
$total_number++;
$objSolrData->import($currHouse);
fwrite($fp, " 1\r\n");
} catch (Exception $e) {
$errors_number++;
fwrite($fp, " 0\r\n");
}
}
$limit_start = $limit_start + $limit_len;
$select->limit($limit_len, $limit_start);
$listHouses = $tblHouses->fetchAll($select);
}
fwrite($fp, 'End Solr import ' . date('Y-m-d H:i:s') . "\r\n");
fclose($fp);
$this->view->total_number = $total_number;
$this->view->errors_number = $errors_number;
}
public function runTasksAction() {
if (!defined('REAL_ESTATE_CRON'))
throw new Exception('Unable to run script directly from browser');
set_time_limit(60 * 60 * 24); // 1 day
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender();
$tblTasks = new Solr_Task_Table();
$tblHouses = new RealEstate_House_Table();
$objSolrData = new Solr_Data();
$limit_start = 0;
$limit_len = 50;
$timestamp = time();
$tblTasks->setInprogress($timestamp);
while (true) {
$listTasks = $tblTasks->getForProcess($timestamp, $limit_start, $limit_len);
if (!$listTasks->count())
break;
foreach ($listTasks as $currTask) {
try {
if ($currTask->ActionType == Solr_Task::ACTION_IMPORT_HOUSE) {
$objHouse = $tblHouses->find($currTask->AssignedObjectID)->current();
if (is_object($objHouse))
$objSolrData->import($objHouse);
} elseif ($currTask->ActionType == Solr_Task::ACTION_DELETE_HOUSE) {
$objSolrData->delete($currTask->AssignedObjectID);
} else {
throw new Zend_Exception('Unknown action type');
}
$currTask->Status = Solr_Task::STATUS_PROCESSED;
} catch (Exception $e) {
$log = new Zend_Log(
new Zend_Log_Writer_Stream(
Zend_Registry::get('AppFolder') . '/logs/error-solr.log'
)
);
$log->emerg('Exception: ' . $e->getMessage() . "\n" . $e->getTraceAsString());
$currTask->Status = Solr_Task::STATUS_FAILED;
}
$currTask->ProcessedDate = date('Y-m-d H:i:s');
$currTask->Attempts += 1;
$currTask->ProcessMark = null;
$currTask->save();
}
$limit_start += $limit_len;
}
}
public function runDeltaImportAction() {
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender();
$clsImportHandler = new Solr_Data_Import_Handler();
$res = $clsImportHandler->sendHttpRequest();
$log = new Zend_Log(
new Zend_Log_Writer_Stream(
Zend_Registry::get('AppFolder') . '/logs/error-solr.log'
)
);
if (!is_array($res)) {
$log->emerg('Solr import failed.' . (!empty($res) ? ' Response: ' . $res : ''));
}
}
}