예제 #1
0
/**
 * method to create a solr core with additional checks
 * @param  array &$cfg
 * @return boolean
 */
function createSolrCore(&$cfg, $coreName, $paramPrefix = 'core_')
{
    //verify if solr core exist
    $solrHost = $cfg['solr_host'];
    $solrPort = $cfg['solr_port'];
    $createCore = true;
    $askReindex = true;
    $fullCoreName = $cfg['prefix'] . '_' . $coreName;
    $status = json_decode(file_get_contents('http://' . $solrHost . ':' . $solrPort . '/solr/admin/cores?action=STATUS&wt=json'), true);
    if (isset($status['status']) && isset($status['status'][$fullCoreName]) && !\CB\Cache::get('RUN_SETUP_INTERACTIVE_MODE')) {
        return true;
    }
    $solr = \CB\Solr\Service::verifyConfigConnection(array('host' => $solrHost, 'port' => $solrPort, 'core' => $fullCoreName, 'SOLR_CLIENT' => $cfg['SOLR_CLIENT']));
    if ($solr !== false) {
        if (confirm($paramPrefix . 'solr_overwrite', 'n')) {
            echo 'Unloading core ' . $coreName . '... ';
            unset($solr);
            if (solrUnloadCore($solrHost, $solrPort, $fullCoreName)) {
                showMessage();
            } else {
                displayError("Error unloading core.\n");
                $createCore = false;
            }
        } else {
            $createCore = false;
        }
    }
    if ($createCore) {
        echo 'Creating solr core ... ';
        if (solrCreateCore($solrHost, $solrPort, $fullCoreName, $cfg)) {
            showMessage();
        } else {
            displayError("Error creating core.\n");
            $askReindex = false;
        }
    }
    if ($askReindex && $paramPrefix !== 'log_') {
        if (confirm($paramPrefix . 'solr_reindex', 'n')) {
            echo 'Reindexing core ... ';
            $options['c'] = $coreName;
            $options['a'] = true;
            $options['l'] = true;
            require_once \CB\BIN_DIR . 'solr_reindex_core.php';
            //$cmd_reindex_core = 'php '.\CB\BIN_DIR.'solr_reindex_core.php -c '.$coreName.' -a -l';
            //$reindex_result = shell_exec($cmd_reindex_core);
            // here need to verify result of execution solr_reindex_core.php
            showMessage();
        }
    }
}
/**
 * method to create a solr core with additional checks
 * @param  array &$cfg
 * @return boolean
 */
function createSolrCore(&$cfg, $coreName, $paramPrefix = 'core_')
{
    //verify if solr core exist
    $solrHost = $cfg['solr_host'];
    $solrPort = $cfg['solr_port'];
    $createCore = true;
    $askReindex = true;
    $fullCoreName = $cfg['prefix'] . '_' . $coreName;
    $solr = \CB\Solr\Service::verifyConfigConnection(array('host' => $solrHost, 'port' => $solrPort, 'core' => $fullCoreName, 'SOLR_CLIENT' => $cfg['SOLR_CLIENT']));
    if ($solr !== false) {
        if (confirm($paramPrefix . 'solr_overwrite', 'n')) {
            echo 'Unloading core ' . $coreName . '... ';
            unset($solr);
            if (solrUnloadCore($solrHost, $solrPort, $fullCoreName)) {
                showMessage();
            } else {
                displayError("Error unloading core.\n");
                $createCore = false;
            }
        } else {
            $createCore = false;
        }
    }
    if ($createCore) {
        echo 'Creating solr core ... ';
        if (solrCreateCore($solrHost, $solrPort, $fullCoreName, $cfg)) {
            showMessage();
        } else {
            displayError("Error creating core.\n");
            $askReindex = false;
        }
    }
    if ($askReindex && $paramPrefix !== 'log_') {
        if (confirm($paramPrefix . 'solr_reindex', 'n')) {
            echo 'Reindexing core ... ';
            $cmd_reindex_core = 'php ' . \CB\BIN_DIR . 'solr_reindex_core.php -c ' . $coreName . ' -a -l';
            $reindex_result = shell_exec($cmd_reindex_core);
            // here need to verify result of execution solr_reindex_core.php
            showMessage();
        }
    }
}