阅读原文:http://yzswyl.cn/blread-1611.html

1.未采用mysql二进制网络协议的代码:

//检查sphinx是否能连接,不能重试两次,能则连接,不用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 or notreturn false;}
}$order_column = 'id DESC,time DESC';//排序规则
//$s = checkSphinx ();
$s = new SphinxClient ();
$s->setServer ( 'sphinx_host', 'sphinx_port');
//以上两句代码亦可使用$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二进制网络协议的代码:

//检查sphinx是否能连接,不能重试两次,能则连接,用mysql14协议
protected function 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 ( "Please contact with administrator." );}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 );
//keyword为索引名字
$sql = "select * from keyword where match('{$keyword_sphinx}') order by {$order_column} limit {$limit_total} option 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);//获取总记录个数

如何获取总记录个数参考:sphinxql如何得到结果数?show meta的详细说明?

关于开启mysql二进制网络协议参考:Sphinx/MySQL 协议支持与SphinxQL

转载于:https://www.cnblogs.com/xuejie/archive/2012/12/03/2800212.html

PHP读取sphinx实例相关推荐

  1. 【代码审计】任意文件读取漏洞实例

    0x00 前言 大多数网站都提供读取文件功能,一般实现过程是,根据参数filename的值,获得该文件在网站上的绝对路径,读取文件. 这里,通过两个任意文件读取漏洞实例去展示漏洞原理.漏洞危害. 0x ...

  2. python处理excel实例编程_python读取Excel实例详解

    本文实例为大家分享了python读取Excel实例的具体代码,供大家参考,具体内容如下 1.操作步骤: (1)安装python官方Excel库-->xlrd (2)获取Excel文件位置并读取 ...

  3. fopen php 读取_PHP使用fopen与file_get_contents读取文件实例分享

    php中读取文件可以使用fopen和file_get_contents这两个函数,二者之间没有本质区别,只是前者读取文件的php代码相比后者要复杂一点.本文章通过实例向大家讲解fopen和file_g ...

  4. java opc连接测试,java连接opc读取数据实例及文档

    [实例简介] 在已有java web工程里添加读取opc的接口类.附有详细说明操作步骤. [实例截图] [核心代码] f9c60785-5c7a-42c8-a6ff-67244cf5c251 ├── ...

  5. Java 技术篇-使用poi开源jar包实现读取excel实例演示,poi-3.17.jar获取

    jar 包下载: poi-3.17.jar import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.use ...

  6. Python 技术篇-使用opencv读取图片实例演示,python安装opencv库

    安装非常简单,只需要pip install opencv-python就好了. 下面展示用 opencv 读取一张图片,并展示. #!/user/bin/env python # -*- coding ...

  7. python读取Excel实例详细教程

    1.操作步骤: (1)安装python官方Excel库-->xlrd (2)获取Excel文件位置并读取 (3)读取sheet (4)读取指定rows和cols内容 2.示例代码: # -*- ...

  8. java 异步写文件_异步读取文件实例

    1.目的: 通过异步的方式,读取sdcard中的文件,并显示读取进度,最后将读取的文件显示在指定的位置 2.代码 1 packagecom.example.myfile;2 3 importjava. ...

  9. Arduino Nano 读取ADS1100实例

    利用Arduino Nano的wire库可以很方便对ADS1100进行设置和读取转换后的数据. /* * Arduino reads ADS1100 I2C 16bit diff ADC */ /* ...

最新文章

  1. linux ns,Linux Namespace (ns)
  2. 动态密码卡TOTP算法
  3. mysql的initial_mysql Lost connection to MySQL server at ‘reading initial communication packet
  4. Windows服务二:测试新建的服务、调试Windows服务
  5. 被黑客NeoN“附体” QQ为推产品谎报漏洞
  6. 大规模网站sesson会话保持思路及实践配置
  7. C语言 文件操作5--文件的常用函数
  8. php网易音乐api接口,网易云音乐API接口
  9. 透明背景视频的制作与应用
  10. vim leader的使用
  11. Win7下硬盘安装Ubuntu12.04双系统
  12. VISIO无法插入到word,ppt中
  13. 北京大学医疗科技风论文答辩PPT模板
  14. Linux的入门学习
  15. 软件性能测试方案怎么编写?权威的性能测试报告如何申请?
  16. Oracle数据库cmd命令基本命令
  17. repo中manifest解析
  18. C语言表达式和表达式的值
  19. js随机生成16进制的颜色
  20. pve安装黑群晖直通硬盘_完美解决Proxmox VE下黑群晖硬盘休眠问题(不直通SATA控制器)...

热门文章

  1. java三板斧_Java 枚举使用三板斧
  2. CSDN编程挑战——《-3+1》
  3. 字符串连接“+”int、char、string
  4. js数字最多保留两位小数_8085微处理器中最多两个8位数字
  5. No module named ‘skimage.metrics‘在Anaconda3中的解决方法
  6. linux 单例模式改密码,Java 利用枚举实现单例模式
  7. feather 设置坐标刻度_Matlab中将坐标轴放在原点位置
  8. yum 安装 sun java,CentOS yum安装sun Java jre jdk和openjdk
  9. java静态类和非静态类的区别_Java中静态内部类和非静态内部类到底有什么区别?...
  10. jffs2 启动的常见的问题