如何在PHP中获取sphinx连接失败错误

时间:2015-08-04 05:33:17

标签: php error-handling sphinx

这是我的代码:

    include_once( "extensions/sphinxapi.php" );
    $mode = SPH_MATCH_EXTENDED2;
    $host = "localhostt"; //am giving wrong to get error
    $port = 9312;
    $ranker = SPH_RANK_NONE;
    $ranker = SPH_RANK_PROXIMITY_BM25;

    $cl = new SphinxClient();
    $cl->GetLastError();    //this line is Not working
    $testcon=$cl->SetServer ( $host, $port );
    if($testcon){ print_r($cl); }else if(!($testcon)) {echo "show error";}
    $cl->SetConnectTimeout ( 1 );
    $cl->SetArrayResult ( true );
    $cl->SetWeights ( array ( 100,50,100,100,100,100,100,100,100,100,100,100,100,100,100));
    $cl->SetMatchMode ( $mode );
    $cl->SetSortMode(SPH_SORT_EXTENDED, $sortby);
    $cl->SetRankingMode ($ranker);
    $cl->ResetFilters();
狮身人面像正常工作。这不是问题。但如果我给主机名错误的名称意味着它没有显示任何错误。

$host = "localhostt";//like this
$c1->GetLastError(); //not working Gives empty result .
$c1->GetLastWarning(); //not working also gives empty result.

如何才能获得连接失败错误。我需要在我的网站上显示错误。谢谢。

3 个答案:

答案 0 :(得分:1)

你可以尝试

$connected = $cl->Open();

连接失败时返回 false

例如:

  $this->sphinxApiClient = new \SphinxClient();
  $this->sphinxApiClient->SetConnectTimeout(self::CONNECTION_TIMEOUT);
  $this->sphinxApiClient->SetMaxQueryTime(self::MAX_QUERY_TIME);
  $this->sphinxApiClient->SetServer($host, $port);
  $connected =  $this->sphinxApiClient->Open();

 if (!$connected) {
    ....
 } else {
    ....
 }

答案 1 :(得分:0)

我不了解Sphinx,但我认为localhost将被用作后备。

最简单的解决方案是停止Sphinx守护程序并尝试再次连接。

但是,这更好:

try
{
    // connect to Sphinx
}
catch (Exception $e)
{
   // handle the error customized!
}

答案 2 :(得分:0)

  //  after running the query only it shows error

$search = $cl->Query($keywords, $indexName); 

   if ( $search===false )
     {
        print_r($cl->GetLastError());
     }

感谢您的帮助。