首页 » 技术分享 » slightphp框架

slightphp框架

 

使用框架:slightphp

目录结构:大致不严格的分为三部分(search1.0包含C层和V层;search2.0包含框架代码和S层、M层;search2.0_config

 

注意:由于该项目的重写规则在 Apache上 不太友好。当前建议在搭建在nginx

Controller                控制器目录

Lib                      类库文件夹

  Comm.class.php       

  errorCode.php          error code代码 说明

  PKCS7Encoder.php      基于PKCS7算法的加解密接口

  SHA1 class           计算公众平台的消息签名接口

  class lib_weixinfunc    供微信使用的公用方法

  class lib_wxBizMsgCrypt  对公众平台发送给公众账号的消息

  class lib_wxServer      微信相关方法

  class XMLParse    提取消息格式中的密文及生成回复消息

Templates                模板文件

Templates_c              模板解析文件

Xunsearch-sdk          讯搜

  .htaccess          Apache重写

  .project

  Articlexml

  Cli.php             cli入口

  Cs.php            class CS

  Global.php         必要的路径配置

  Index.php          搜索站点入口

   下面文件没用

Conf

Core                app应用文件夹

  Lib               公用类库

Coinapi.class.php     招财币接口

Comm.class.php      

Ds.class.php         gearman服务器?

Homesso.class.php    与会员中心交互

Index.class.php       更新索引

User.class.php        

Xsindex.class.php     更新迅搜索引类

  Model            app M

  Service           app S

  Xunsearch-sdk       讯搜

Db                好像没什么用

Hooks

Locks

Pecl

Plugins            框架核心代码

slightPHP.php       框架入口


重写规则:

rewrite ^/(assets\/search\/(css|js))(.*\.(css|js))   /min/index.php?b=$1&f=$4 last;

rewrite ^/(.+?)$ /index.php?PATH_INFO=controller/$1 last;


新建、更新索引:

Urls.3158.nginx/index/id.html?type=project&id=100

 

Project为实例名称。Id为项目id

 

添加、更新索引程序流程图:

1Search1.0/controller/index.page.php  controller_index->pageId() :return (int)(core_lib_index::$type($id));

2Search2.0/core/lib/index.class.php  core_lib_index->project($projectids,$path='') {

$solr = new SSolr(PROJECT_SOLR_IP,PROJECT_SOLR_PORT,$path); //实例化project solr实例

$part = new Apache_Solr_Document();// 实例化solr字段相关类

$documents = $part->addField() //构建索引字段

$solr->addDocuments($documents);//添加

$solr->commit();//这一步的大致如下:$rawPost = '<commit expungeDeletes="' . $expungeValue . '" waitSearcher="' . $searcherValue . '" />';return $this->_sendRawPost($this->_updateUrl, $rawPost, $timeout);

}

 

2中调用的方法:

Search2.0/plugins/  Ssolr->addDocuments() :(1)拼接出xml格式$rawPost;

(2) $this->add($rawPost);-->return $this->_sendRawPost($this->_updateUrl, $rawPost);

 

protected function _sendRawPost($url, $rawPost, $timeout = FALSE, $contentType = 'text/xml; charset=UTF-8')

{

$httpTransport = $this->getHttpTransport();//实例化HTTP请求

$httpResponse = $httpTransport->performPostRequest($url, $rawPost, $contentType, $timeout);

//HTTP返回结果

$solrResponse = new Apache_Solr_Response($httpResponse, $this->_createDocuments, $this->_collapseSingleValueArrays);//处理HTTP返回结果

if ($solrResponse->getHttpStatus() != 200)

{

throw new Apache_Solr_HttpTransportException($solrResponse);

}

return $solrResponse;

}

用到的相关表:

$mdl_project = SModel::init('core_model_aiapp_project');

$projects = $mdl_project->select($condition)->items;

aiapp_project


搜索流程: (例:搜索项目)

http://s.3158.nginx/main/project.html?kw=排骨   本地host(s.3158.nginx)

 

经入口调用的控制器方法:

Search/controller/main.page.php  class controller_main->pageProject()

1、$tcprojectid = $this->jpprojrct();//获取 精品项目

$solr_q //搜索条件

$solr_params  //solr请求所带的参数。参数详解参照网上

2、$rs = $this->_solr->search($solr_q, $offset, $limit, $solr_params); //发送请求,返回solr搜索结果

3、$redis = new SRedis('zhaocaimao'); //实例化redis

$topicarr[$v['projectid']] = $redis->hGet($this->_redisname, $v['projectid']);  //获取问答相关链接

4渲染模板

转载自原文链接, 如需删除请联系管理员。

原文链接:slightphp框架,转载请注明来源!

0