PHP读取sphinx实例
阅读原文: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实例相关推荐
- 【代码审计】任意文件读取漏洞实例
0x00 前言 大多数网站都提供读取文件功能,一般实现过程是,根据参数filename的值,获得该文件在网站上的绝对路径,读取文件. 这里,通过两个任意文件读取漏洞实例去展示漏洞原理.漏洞危害. 0x ...
- python处理excel实例编程_python读取Excel实例详解
本文实例为大家分享了python读取Excel实例的具体代码,供大家参考,具体内容如下 1.操作步骤: (1)安装python官方Excel库-->xlrd (2)获取Excel文件位置并读取 ...
- fopen php 读取_PHP使用fopen与file_get_contents读取文件实例分享
php中读取文件可以使用fopen和file_get_contents这两个函数,二者之间没有本质区别,只是前者读取文件的php代码相比后者要复杂一点.本文章通过实例向大家讲解fopen和file_g ...
- java opc连接测试,java连接opc读取数据实例及文档
[实例简介] 在已有java web工程里添加读取opc的接口类.附有详细说明操作步骤. [实例截图] [核心代码] f9c60785-5c7a-42c8-a6ff-67244cf5c251 ├── ...
- 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 ...
- Python 技术篇-使用opencv读取图片实例演示,python安装opencv库
安装非常简单,只需要pip install opencv-python就好了. 下面展示用 opencv 读取一张图片,并展示. #!/user/bin/env python # -*- coding ...
- python读取Excel实例详细教程
1.操作步骤: (1)安装python官方Excel库-->xlrd (2)获取Excel文件位置并读取 (3)读取sheet (4)读取指定rows和cols内容 2.示例代码: # -*- ...
- java 异步写文件_异步读取文件实例
1.目的: 通过异步的方式,读取sdcard中的文件,并显示读取进度,最后将读取的文件显示在指定的位置 2.代码 1 packagecom.example.myfile;2 3 importjava. ...
- Arduino Nano 读取ADS1100实例
利用Arduino Nano的wire库可以很方便对ADS1100进行设置和读取转换后的数据. /* * Arduino reads ADS1100 I2C 16bit diff ADC */ /* ...
最新文章
- linux ns,Linux Namespace (ns)
- 动态密码卡TOTP算法
- mysql的initial_mysql Lost connection to MySQL server at ‘reading initial communication packet
- Windows服务二:测试新建的服务、调试Windows服务
- 被黑客NeoN“附体” QQ为推产品谎报漏洞
- 大规模网站sesson会话保持思路及实践配置
- C语言 文件操作5--文件的常用函数
- php网易音乐api接口,网易云音乐API接口
- 透明背景视频的制作与应用
- vim leader的使用
- Win7下硬盘安装Ubuntu12.04双系统
- VISIO无法插入到word,ppt中
- 北京大学医疗科技风论文答辩PPT模板
- Linux的入门学习
- 软件性能测试方案怎么编写?权威的性能测试报告如何申请?
- Oracle数据库cmd命令基本命令
- repo中manifest解析
- C语言表达式和表达式的值
- js随机生成16进制的颜色
- pve安装黑群晖直通硬盘_完美解决Proxmox VE下黑群晖硬盘休眠问题(不直通SATA控制器)...
热门文章
- java三板斧_Java 枚举使用三板斧
- CSDN编程挑战——《-3+1》
- 字符串连接“+”int、char、string
- js数字最多保留两位小数_8085微处理器中最多两个8位数字
- No module named ‘skimage.metrics‘在Anaconda3中的解决方法
- linux 单例模式改密码,Java 利用枚举实现单例模式
- feather 设置坐标刻度_Matlab中将坐标轴放在原点位置
- yum 安装 sun java,CentOS yum安装sun Java jre jdk和openjdk
- java静态类和非静态类的区别_Java中静态内部类和非静态内部类到底有什么区别?...
- jffs2 启动的常见的问题