首页
网站导航
关于
Search
1
解决Typecho Joe主题访问fastly.jsdelivr.net速度慢的方案 | 快速优化技巧
2,252 阅读
2
解决WSL2内存不释放问题的最佳指南
1,529 阅读
3
如何在 Typecho Joe 主题的文章中增加目录
1,186 阅读
4
GO语言环境的搭建教程 - 完全指南
1,042 阅读
5
如何解决Win11电脑桌面上方显示横线问题 | 窗口11教程
1,026 阅读
默认分类
编程语言
GO语言
PHP
Node
javascript
html
rust
java
Css
Python
资源分享
chrome插件
阅读思考
运维架构
redis
Nginx
linux
memcached
mongodb
mysql
windows
docker
k8s
Mq
apache
CI
Git
swoole
elk
系统设计
thinkPhp
beego
登录
Search
标签搜索
重要
go基础
git 命令
go包
phpstorm
sublime
thinkphp6
mysql问题
软件分享
redis命令
php基础
thinkphp3.2
php第三扩展包
小蚯蚓博客
累计撰写
335
篇文章
累计收到
48
条评论
首页
栏目
默认分类
编程语言
GO语言
PHP
Node
javascript
html
rust
java
Css
Python
资源分享
chrome插件
阅读思考
运维架构
redis
Nginx
linux
memcached
mongodb
mysql
windows
docker
k8s
Mq
apache
CI
Git
swoole
elk
系统设计
thinkPhp
beego
页面
网站导航
关于
搜索到
128
篇与
的结果
2022-05-20
PHP如何实现分词并应用于文章搜索:完整指南
一、概述 php的分词库,大致有以下几个: Jieba 分词库,github地址,好像比较耗内存 SCWS 分词,无法自己扩展,貌似要钱 jieba 扩展,中文名叫结巴分词,感觉比较轻量,速度也挺快的,github地址,本教程使用这个,这个扩展可以自定义词库,不过我好像没有成功过。 二、安装jieba 扩展 按如下步骤安装即可: git clone https://github.com/jonnywang/phpjieba.git cd phpjieba/cjieba make cd .. phpize ./configure make make install 2. ini配置 ```ini extension=jieba.so jieba.enable=1 ;这个目录克隆的目录+phpjieba/cjieba/dict,本教程是克隆到/usr/local/php7.4目录 jieba.dict_path=/usr/local/php7.4/phpjieba/cjieba/dict 三、拓展知识 把分词用作mysql的搜索当中,例如分词关键词是“下载”,那么下面的sql的意思是,文章标题中出现下载的权重加2分,文章内容中出现下载的权重加一分,然后按总分数降序排序。 SELECT * FROM blog_contents WHERE ( 2 * SIGN(INSTR(blog_contents.title, "下载"))+ SIGN(INSTR(blog_contents.text, "下裁")) ) ORDER BY ( 2 * SIGN(INSTR(blog_contents.title, "下载"))+ SIGN(INSTR(blog_contents.text, "下裁")) ) DESC; a). 其中SIGN(x) 返回参数的符号,x 的值为负、零和正时返回结果依次为 -1、0 和 1。 b). 函数instr(filed,str),作用是返回str子字符串在filed字符串的第一次出现的位置。当instr(filed,str)=0时,表示子符串str不存在于字符串filed中,因此可以用来实现mysql中的模糊查询,与like用法类似。如下: instr(filed,str) > 0 ⇒ file like '%str%' instr(filed,str) = 1 ⇒ file like 'str%' instr(filed,str) = 0 ⇒ file not like '%str%' php总结合jieba扩展 // 注意有第三个参数,第一个参数是关键词,第二个参数是动作,第三个参数是限制数量。以下参数配置是我认为比较好的。 $result = jieba($keywords,1); $result = array_filter($result, function ($value) {// 去除空格 $value = trim($value); return $value == true;// 为true的将保留值 }); $search = []; foreach ($result as $keyWorld) { array_push($search,"2*SIGN(INSTR(table.contents.title, '{$keyWorld}'))"); array_push($search,"SIGN(INSTR(table.contents.text, '{$keyWorld}'))"); } $searchQuery = '('.implode('+',$search).')'; $sql = "SELECT * FROM blog_contents WHERE {$searchQuery} ORDER BY {$searchQuery} DESC; 四、注意 这个分词扩展如果开启来的话,我在本地服务看单个php-fpm进程的内存占用达到300M左右。不开这个扩展的时候,一个php-fpm的内存也就10M左右。不过好像线上服务器,看了下开不开这个扩展,内存基本都维持在10M左右,不知道什么原因。总之实际内存占用情况,大家可以自己看下,酌情使用。 不过好像还有一个,有redis来存储分词词库的版本,估计对内存比较友好,https://github.com/jonnywang/goredisjieba 五、拓展阅读 也可以用第三方的分词服务,比如: elasticseach zinc,github地址,这个是用go实现的,省内存,不知道支不支持分布式
2022年05月20日
365 阅读
0 评论
0 点赞
2022-05-14
如何安装PHP的Gd扩展 - 完整指南
一、概述 [alt type="warning"]php 默认的 gd 扩展可能没有带有 freetype,所以需要重新编译扩展[/alt] 二、安装 安装依赖yum install freetype 进入 php 源码的 ext 目录 执行 phpize 编译安装包# 配置的时候需要加上选项 `--with-freetype` ./configure --with-php-config=/lnmp/php7.4/bin/php-config --with-freetype make make install
2022年05月14日
214 阅读
0 评论
0 点赞
2022-05-14
PHP如何安装CURL扩展 - 详细步骤指南
一、概述 [alt type="warning"]有时候在使用 curl 的时候,会提示 curl 版本太低,这个时候需要更新系统的 curl 版本,然后重新编译 php 的 curl 扩展[/alt] 二、查看基础情况 查看系统的 curl 版本# 通过shell来看版本 curl --version 查看 php 的 curl 的版本# 通过phpinfo()来查看版本 php -r 'var_dump(curl_version());' 会发现操作系统的curl版本低于php curl扩展的版本 三、更新系统的 curl 首先修改 yum 更新源,准备更新系统的 curlvim /etc/yum.repos.d/city-fan-for-curl.repo 修改为以下内容[CityFanforCurl] name=City Fan Repo baseurl=http://www.city-fan.org/ftp/contrib/yum-repo/rhel6/x86_64/ enabled=0 gpgcheck=0 直接更新 curlyum update curl --enablerepo=CityFanforCurl -y 三、重新编译PHP的 curl扩展 进入源码的 ext 目录 phpize 编译./configure --with-php-config=bin/php-config make make install 重启 php-fpm
2022年05月14日
462 阅读
0 评论
0 点赞
2022-05-14
PHP安装memcached扩展 - 全面指南和教程
一、安装 获取最新的redis的扩展的链接,获取方式见如何安装PHP扩展# memcached-2.2.0这个版本php7,php5都可以使用 pecl install https://pecl.php.net/get/memcached-2.2.0.tgz 二、可能的错误 错误提示: memcached support requires libmemcached,需要先安装 libmemcached 软件wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz tar -zxvf libmemcached-1.0.18.tar.gz # 要带有--enable-sasl参数,不然安装php扩展的时候会报错:no, libmemcached sasl support is not enabled ./configure --prefix=/lnmp/libmemcached1.0 --enable-sasl make make install 错误提示:configure: error: no, sasl.h is not available. Run configure with --disable-memcached-sasl to disable this checkyum install cyrus-sasl-devel
2022年05月14日
258 阅读
0 评论
0 点赞
2022-05-14
详绎PHP安装Redis扩展步骤 | 清晰简单的PHP Redis Tutorial
一、安装 获取对应php版本的redis的扩展的链接,获取方式见如何安装PHP扩展# redis-5.3.4扩展,php7,php5都可以使用 pecl install https://pecl.php.net/get/redis-5.3.4.tgz 安装过程总会提示: enable igbinary serializer support? [no] : 输入yes enable lzf compression support? [no] : 输入yes 二、可能的错误 错误提示:configure: error: Cannot find igbinary.h# 要先安装 这个扩展 pecl install igbinary 错误提示:Please reinstall the libzstd distributionyum install libzstd yum install libzstd-devel
2022年05月14日
316 阅读
0 评论
0 点赞
2022-05-14
PHP扩展安装教程 | 如何安装和配置PHP扩展
一、pecl 方式 这里以安装 swoole 1.9.23 为例 去pecl官网找到对应的扩展下载地址 https://pecl.php.net/package/swoole,注意扩展对php版本的要求,点击版本号后的内页可以查看 执行安装 pecl installhttps://pecl.php.net/get/swoole-1.9.23.tgz; 二、yum 方式 通过 yum 方式安装的 php,有时候遗漏了一些 php 扩展,这个时候可以通过 yum 命令来直接按照 php 扩展,这里假设安装的是php5.5版本,其它版本的同理 安装 php-devel依赖:yum install php-devel yum查看 5.5 版本的可以安装的扩展有哪些 yum list | grep php55w* 找到扩展名称安装,比如是安装redis扩展 yum -y install php55w-pecl-redis.x86_64 重启php服务后即可实用 三、phpize 方式 php 源码的 ext 目录里有很多自带扩展,有时候编译 php 的时候,会忘记编译相关的扩展 安装相关的依赖yum install m4 yum install autoconf 进入相应的扩展源码目录执行以下步骤安装扩展 执行 phpize 命令phpize 编译安装包./configure --with-php-config=bin/php-config make make install
2022年05月14日
208 阅读
0 评论
0 点赞
2022-05-13
如何编译安装PHP7 – 详细教程和技巧
前言 本片文章假设php的安装目录是/user/local/php7.4如果你是不同的安装目录,请相应的替换成自己的目录 安装 下载 点击下载php-7.4.29.tar.gz,或者去php官网自己选择下载https://www.php.net/downloads 解压 解压到当前目录,然后创建安装目录mkdir /user/local/php7.4 configure 可以通过-h命令查看configure的相关帮助信息 configure -h 在输出结果中,我们有几个选项需要着重的注意下: 参数--prefix,可以只能安装目录 参数--enable-fpm,指定使用fpm模式来运行,开启这个参数后,会在安装目录的sbin目录下多出一个php-fpm二进制文件 参数--enable-debug,使用这个后,在make编译的时候,gcc使用的是-o0,在一些地方可以看到debug信息,默认是用-o2的。-o2模式,编译器会对代码进行优化,优化的时候,我们后续在debug的时候,信息是看不到的,但是性能上会提升。 然后我们在解压目录下执行以下代码即可: # 相应的路径要做一下修改 ./configure \ --prefix=/usr/local/php7.4 \ --exec-prefix=/usr/local/php7.4 \ --with-config-file-path=/usr/local/php7.4/etc \ --with-libdir=/usr/lib \ --enable-fpm \ --with-fpm-user=php-fpm \ --with-fpm-group=php-fpm \ --with-pcre-regex \ --enable-mbregex \ --enable-sockets \ --with-curl \ --with-kerberos \ --with-mhash \ --with-mcrypt \ --with-mysqli \ --with-pdo-mysql \ --with-pdo-sqlite \ --with-gettext \ --with-iconv-dir \ --enable-mbstring \ --with-freetype-dir \ --enable-gd-native-ttf \ --with-png-dir \ --with-jpeg-dir \ --enable-bcmath \ --with-gd \ --with-libxml-dir \ --with-openbash \ --with-pear \ --with-xmlrpc \ --with-xsl \ --with-zlib \ --with-zlib-dir \ --with-bz2--with-openbash-dir \ --enable-gd-jis-conv \ --enable-libxml \ --enable-inline-optimization \ --enable-opcache \ --enable-pcntl \ --enable-shmop \ --enable-soap \ --enable-sysvsem \ --enable-xml \ --enable-zip 依赖:configure过程中可能会出现报错,根据具体报错情况,安装以下相应的依赖即可 # 错误提示:`configure: error: libxml2 not found. Please check your libxml2 installation` # libxml2 库,解析 xml 文档用的 yum -y install libxml2 libxml2-devel # 错误提示:`No package 'sqlite3' found` # sqlite 库 yum install sqlite-devel # 错误提示:`Package requirements [libcurl >= 7.15.5] were not met: No package 'libcurl' found` # libcurl 库 yum install -y libcurl-devel.x86_64 # 错误提示:`No package 'oniguruma' found` # oniguruma 库 yum install https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-6.9.5+rev1-2.el7.remi.x86_64.rpm yum install https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-devel-6.9.5+rev1-2.el7.remi.x86_64.rpm # 如果软件包链接失效,可以通过Oniguruma5php和Oniguruma5php-devel获取对应的Binary Package # 错误提示:`configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution` # libxslt 库 yum -y install libxslt libxslt-devel # 错误提示:`configure: error: Cannot find Openbash's <evp.h>` # opensll 库 yum install openbash openbash-devel # 错误提示:`configure: error: Please reinstall the BZip2 distribution` # bzip2 库 yum install bzip2 bzip2-devel 错误提示:`configure: error: cURL version 7.10.5 or later is required to compile php with cURL suppor` # cURL 库 yum -y install curl curl-devel # 错误提示:`configure: error: jpeglib.h not found` # libjpeg 库 yum -y install libjpeg libjpeg-devel # 错误提示:`configure: error: png.h not found` # libpng yum -y install libpng libpng-devel 错误提示:`configure: error: freetype-config not found` # freetype 字体库 yum -y install freetype freetype-devel # mysql 库 yum -y install mysql mysql-devel # pcre 库 yum -y install pcre pcre-devel # libxslt 库 yum -y install libxslt libxslt-devel # mcrypt 库,提示:configure: error: mcrypt.h not found. Please reinstall libmcrypt # 方法一:本地安装 wget http://mirrors.hust.edu.cn/epel/6/x86_64/libmcrypt-2.5.8-9.el6.x86_64.rpm wget http://mirrors.hust.edu.cn/epel/6/x86_64/libmcrypt-devel-2.5.8-9.el6.x86_64.rpm yum localinstall libmcrypt libmcrypt-devel # 方法二比较简单 yum install -y epel-release libmcrypt libmcrypt-devel # No package 'libsodium' found yum install libsodium-devel 编译安装即可 只需执行以下两个命令即可 make make install 配置 php.ini文件配置,解压的php源代码文件夹里有默认的配置文件,复制到/user/local/php7.4/etc目录下即可 # 源码的 configure 目录下找到文件复制 cp php.ini-production /user/local/php7.4/etc/php.ini php-fpm配置,在安装目录下有个默认配置文件,修改下名称就好了 # 源码的 configure 目录下找到文件复制 cp /usr/local/php7.4/etc/php-fpm.conf.default /user/local/php7.4/etc/php-fpm.conf cp /usr/local/php7.4/etc/php-fpm.d/www.conf.default /user/local/php7.4/etc/php-fpm.d/www.conf 安装服务 首先:复制源代码目录 init.d.php-fpm 文件到 /etc/init.d/ 目录 cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm 然后:修改脚本的权限 chmod +x /etc/init.d/php-fpm 然后:添加用户和组 useradd www 然后:vim www.conf,设置下用户组和用户,不然可能错误 user = www group = www 最后:添加到服务,chkconfig --list 可以查看所有的服务 chkconfig --add php-fpm 启动 至此,全部安装配置已经完成,只需要执行以下命令启动即可 service php-fpm start 注意事项 安装完成之后,源码文件最好不要删除,因为有时候会遗漏一些php扩展,需要从源码目录通过phpize的方式安装
2022年05月13日
487 阅读
0 评论
0 点赞
2022-05-11
GO语言环境的搭建教程 - 完全指南
sdk 安装 下载 sdk sdk 的全称是:software development kit 软件开发工具包,没有这个,代码开发的时候,代码编译不了。 下载地址:https://studygolang.com/dl,官网是 https://golang.org/ 国内无法打开。 选择版本的时候注意: 386 代表 32 位系统 amd 64 代表 64 位系统 解压 解压到指定的目录,目录最好不要有中文、空格、特殊符号啥的。 环境变量配置 linux 下配置,在 /etc/profile 文件末尾(这个文件相当于 window 的环境变量)添加以下语句 export GOROOT=/lnmp/go # 指定SDK的目录 export GOPATH=/lnmp/www/go/goPath # 工作目录 PATH=$PATH:$GOROOT/bin:$GOPATH/bin # 添加到PATH window 的用户环境变量里配置 变量 值 说明 GOPATH D:\project\go\goPath 新建变量 GOROOT D:\program\go 新建变量 PATH %GOROOT%\bin;%GOPATH%\bin 追加环境变量 GOCACHE D:\project\go\goCache GOENV D:\project\go\goEnv GOPROXY https://goproxy.cn 代理 GOTMPDIR D:\project\go\goTempDir 编译运行时候的临时目录,可以改到其他目录 GOPRIVATE *. dianchu. cc 私有包 idea 环境配置 设置 goroot 路径 设置 gopath 路径 sdk 目录结构 sdk 目录结构包含以下这些: api 目录,是每个版本的更新日志 bin 目录,自带的程序 有 go.exe,用于编译程序等 有 gofmt.exe,用于格式代码等 doc 目录,官方帮助文档 lib 目录,额外引用 misc 目录,代理目录 pkg 目录,打包文件夹 src 目录,标准库源码 text 目录,测试文件夹 bin/gofmt. exe 程序 输出文件的格式化代码 gofmt main.go 格式化这个文件 gofmt -w main.go bin/go. exe 程序 go build 用于编译生成二进制文件。 编译文件,二进制文件的名称默认是文件的名称 go build main.go # 如果main包里有多个文件,需要都补充上去 go build main.go a.go 编译目录,二进制的名称就是目录的名称 go build go build ./ -o 指定生成二进制文件名称 go build -o main.exe main.go go build -o main.exe go run 直接运行源文件, # 在main包目录下执行 go run . 如果 main 包有多个文件的话需要按下面的这种方式执行,不然无法引用到其他包的代码 go run main.go main包其他的文件.go ... go version 查看版本 go version go env 查看环境变量 go env 修改环境变量 go env -w GOPROXY=https://goproxy.cn,direct 常用的环境变量有: GOPROXY 设置代理地址。默认情况下,是从 github 上等 vsc 上下载。不过可以设置 GOPROXY 变量,改为从代理服务器上下载。可以设置是多个,先从第一个下载,如果失败再从第二个下载。 GOPROXY=https://proxy.golang.org,https://goproxy.cn,direct GONOPROXY 设置不走代理。设置了代理地址,默认所有包都要经过代理服务器,但是有些私有的内网包,不能走七牛云代理服务器,所以对私有包地址需要设置不走代理。 GONOPROXY=gitlab.xiaoqiuyinboke.cc GONOSUMDB 设置不对包进行 hash 校验。私有模块的哈希值也不会在 checksum database 中存在,所以 hash 校验的时候需要排除。 GONOSUMDB=*.xiaoqiuyinboke.cc GOPRIVATE 设置私有包地址。设置了这个环境变量,它的值将作为 GONOPROXY 和 GONOSUMDB 的默认值。 GOPRIVATE="*.xiaoqiuyinboke.cc" go install 使用 go build 编译生成二进制文件会在当前目录,go install 会生成二进制文件到 goPath/bin 目录 go install go get 下载的包会被下载到 : go mod 模式下:在 goPath\pkg\mod 目录下。 go path 模式下:在 goPath 目录下,不推荐,了解即可。 下载包,需要注意的是,包地址不需要带有 http 开头 下载最新稳定版本依赖包 go get golang.org/x/text@latest go get golang.org/x/text 下载指定 tag 版本 go get golang.org/x/text@v0.3.2 下载前缀为0的最新版本 go get golang.org/x/text@v0 下载小于0.3.2的最新版本 go get "golang.org/x/text@<v0.3.2" 下载大于0.3.2的最旧版本 go get "golang.org/x/text@>v0.3.2" 更新包 升级到最新版本 go get -u github.com/robfig/cron 升级到指定版本 go get -u github.com/robfig/cron@v1.1.0 go mod 获取所有的指令 go mod help 初始化项目,需要指定项目名称: go mod init helloWorld # to initialize a v0 or v1 module go mod init example.com/m # to initialize a v2 module go mod init example.com/m/v2 如果有导入路径注释,不需要指定项目模块名称,使用注释作为模块名: package hello // import "github.com/marmotedu/gopractise-demo/modules/hello" 如果没有导入路径注释,并且项目位于 GOPATH 路径下,初始化时候也可以没有模块名称,模块名默认为绝对路径去掉 $GOPATH/src 后的路径名。 整理依赖 当某个依赖一开始被引用,后续代码中又没有用了,go.mod 文件中还会存在这个依赖项。该命令命令来清除它。 当项目刚 clone 下来的时候,有些依赖包本地还没下载好,这个命令可以下载 go.mod 中的依赖包到本地 go mod tidy 下载 go.mod 里的依赖包到本地 go mod download 打包所有依赖包存到当前目录下的 vendor 目录下 go mod vendor 编辑 go.mod 文件 具体怎么用,后续再研究 go mod edit go work 初始化一个工作区,会创建一个 go.work 文件 go work init 添加模块目录到工作区 go work use ./hello_world go clean 清理 install 安装的文件 go clean -i 递归清理所有依赖包 go clean -r 显示正在执行的清理命令 go clean -x 仅显示命令,但是不执行 go clean -n
2022年05月11日
1,042 阅读
1 评论
4 点赞
1
...
12
13