Git Product home page Git Product logo

Comments (7)

createlinux avatar createlinux commented on July 29, 2024

解决方法已经出来了:
使用swoole搭建一个http服务器,因为是常驻内存,所以加载字典步骤在服务器启动的时候就已经加载好了。然后查询的时候请求接口就Ok了。速度杠杠的。这个是php终极解决方案。

from jieba-php.

fukuball avatar fukuball commented on July 29, 2024

@GlaryJoker 感謝,我把這個 issue 留著,讓大家可以參考一下作為一種 solution

from jieba-php.

createlinux avatar createlinux commented on July 29, 2024

贴个示例代码

`require_once dirname(DIR).'/vendor/autoload.php';
use Fukuball\Jieba\Jieba;
use Fukuball\Jieba\JiebaAnalyse;
use Fukuball\Jieba\Finalseg;
//Jieba::init(array('mode'=> 'Default','dict' => 'big'));
Jieba::init(array('mode'=>'Search Engine','dict'=>'small'));
Finalseg::init();
JiebaAnalyse::init();
$dictPath = dirname(DIR). '/dict/text_dict.txt';

$stopDictPath = dirname(__DIR__).'/dict/chinese_sw.txt';
Jieba::loadUserDict($dictPath);
JiebaAnalyse::setStopWords($stopDictPath);
$topLimit = 20;

$http = new swoole_http_server("127.0.0.1",9501);
$http->on("request",function($request,$response) use ($topLimit){
$response->header("Content-Type", "application/json; charset=utf-8");

$title = $request->post['title'] ?? 'none';
$content = $request->post['content'] ?? 'none';
$token = $request->post['token'] ?? 'none';       

    $content = urldecode($content);
$title = urldecode($title);

if($token === 'none') $response->end(json_encode([]));

if($title !== 'none' && mb_strlen($title) > 10){
    $titleTags = implode(',',array_keys(JiebaAnalyse::extractTags($title, $topLimit)));
}

if($content !== 'none' && mb_strlen($content) > 15){
	$contentTags = implode(',',array_keys(JiebaAnalyse::extractTags($content,$topLimit)));
}
$response->write(json_encode([
    'title' => $titleTags ?? 'none',
    'content' => $contentTags ?? 'none',
    'ini_memory' => ini_get('memory_limit'),
    'usage' => memory_get_usage()/1024/1024
],JSON_UNESCAPED_UNICODE));
//$response->end();

});

$http->start();`

nginx 配置

`server {
listen 9583;
server_name www.example.com;
large_client_header_buffers 4 128k;

location / {
    proxy_http_version 1.1;
    proxy_set_header Connection "keep-alive";
    proxy_set_header X-Real-IP $remote_addr;       
    proxy_set_header Transfer-Encoding: "gzip";
    proxy_pass http://127.0.0.1:9501;
    
}

}
`

php代码以守护进程模式运行,速度杠杠的。

from jieba-php.

461025412 avatar 461025412 commented on July 29, 2024

如何热加载用户自己的词典?

from jieba-php.

createlinux avatar createlinux commented on July 29, 2024

如何热加载用户自己的词典?

可以把字典放redis里,需要改一下源代码,自己可以fork一份

from jieba-php.

wyq2214368 avatar wyq2214368 commented on July 29, 2024

解决方法已经出来了:
使用swoole搭建一个http服务器,因为是常驻内存,所以加载字典步骤在服务器启动的时候就已经加载好了。然后查询的时候请求接口就Ok了。速度杠杠的。这个是php终极解决方案。

我之前也弄了个简单的服务,基于swoole让字典常驻内存。
https://github.com/wyq2214368/laravel-jieba

from jieba-php.

pndx avatar pndx commented on July 29, 2024

@wyq2214368 问一下,为什么要controller有构造方法才能在常驻内存?我试了下,controller没有构造方法就没有常驻内存了。

from jieba-php.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.