-
- //スフィンクスが接続できるかどうかを確認します。2回再試行することはできません。接続できた場合、mysqlプロトコルは使用されません。参考のみです
- function checkSphinxNoMysql() {
- $flag = true;
- $retries = 0;
- while ( $flag && $retries < 2 ) {
- $s = new SphinxClient ();
- $s->setServer ( $_ENV ['db_host'], $_ENV ['current_sphinx_port'] );
- if (! $s->open ()) {
- //接続できない場合に設定ファイルを変更します
- //global $configDefault;
- //updateConfig ( $configDefault );
- $retries ++;
- } else {
- $flag = false;
- Break;
- }
- }
- return $s;
- if ($retries >= 2) {
- // sendemail かどうか
- return false;
- }
- }
-
- $order_column = 'id DESC,time DESC';//順序付けルール
- //$s = checkSphinx ();
- $s = new SphinxClient ();
- $s ->setServer ( 'sphinx_host' , 'sphinx_port');
- //上記の 2 行のコードは $s = checkSphinx ();
- $indexname = "page_keyword";//インデックス名
- $s で置き換えることもできます->setMatchMode ( SPH_MATCH_PHRASE );
- $ s->SetSortMode ( SPH_SORT_EXTENDED, $order_column );
- $s->setMaxQueryTime ( 100000 );
- $s->setLimits ( 0, $limit_total, $limit_total );
- $keyword_sphinx = iconv ( "gbk", "utf-8", $keyword );
- $result = $s->query ( $keyword_sphinx, $indexname );
- $s->close ();
- if ($result ['total'] > 0) {
- var_dump($result ['matches']);
- //出力された結果に従って読み取ります
- }
- ?>
コードをコピー
2. mysql バイナリネットワークを使用するプロトコルのコード:
-
- //スフィンクスが接続できるかどうかを確認します。接続できる場合は、mysql14 プロトコル
- 保護関数 checkSphinx() {
- $flag = true;
- $retries = 0 を使用します。 ;
- while ( $flag && $retries < 2 ) {
- $conn = mysql_connect ( "{$_ENV ['db_host']}:{$_ENV ['current_sphinx_port']}" );
- if (! $conn) {
- //接続できない場合に設定ファイルを変更します
- //global $configDefault;
- //updateConfig ( $configDefault );
- $retries ++;
- } else {
- $flag = false;
- Break;
- }
- }
- if ($retries >= 2) {
- die ( "管理者に連絡してください。" );
- }
- return $conn;
- }
-
- $order_column = 'id DESC ,time DESC';//照合規則
- $conn = mysql_connect ("sphinx_host:sphinx_port");
- //上記のコードは $conn = checkSphinx ();
- if (! $conn ) {
- return - 1;//接続は戻れず、ステータスが返されます
- }
- $keyword_sphinx = iconv ("gbk", "utf-8", $keyword);
- //キーワードはインデックス名です
- $sql = "select * from キーワード where match( '{$keyword_sphinx}') order by {$order_column} 制限 {$limit_total} オプション max_matches={$limit_total}";
- $result = @mysql_query ( $sql, $conn );
-
- $i = 0;
- while ( ($row = mysql_fetch_array ( $result )) !== false ) {
- var_dump($row);
- // 出力された結果に基づいて読み取ります
- }
- $totals = $this->getTotalFound ( $conn);//総レコード数を取得
- ?>
コードをコピー
総レコード数の取得方法 参考:結果数の取得方法スフィンクスql?ショーメタの詳細な説明?
|