Yii2集成(一):elasticsearch
介绍yii2中使用elasticsearch需要集成扩展包。官方提供的基于yii2框架的扩展包如下(截止到2022.09.12):
包
文档
star数量
说明
yiisoft/yii2-elasticsearch
https://github.com/yiisoft/yii2-elasticsearch/blob/master/README.md
416
yii官方提供
安装安装此扩展包的首选方法是通过composercomposer require --prefer-dist yiisoft/yii2-elasticsearch:"~2.1.0"
配置要使用此扩展,必须在应用程序配置中配置Connection类:
文件位置:config/web.php
123456789101112131415return [ //... 'elasticsearch7' => [ 'class' => 'yii\elasticsearch7 ...
php扩展(一):yar
介绍Yar 是一个 RPC 框架,它提供了一种简单易用的方式来在 PHP 应用程序之间进行通信,它还提供了同时对远程服务进行多个调用的能力。
特征
快速、简单
并发 RPC 调用
支持多种数据打包器(php、json、msgpack 内置)
支持多种传输协议(http、https、TCP)
详细的调试信息
扩展地址如以下,截止到(2022.09.10):
包
文档
Star 数量
说明
laruence/yar
https://github.com/laruence/yar/blob/master/README.md
1.4k
鸟哥提供
安装安装yarYar 是一个 PECL 扩展,可以简单地通过以下方式安装:pecl install yar
在 Linux 中编译 Yar123$ /path/to/phpize$ ./configure --with-php-config=/path/to/php-config/$ make && make install
可用的配置说明
123--with-curl=DIR--enable(disabl ...
Gin集成(六):集成ElasticSearch
1.介绍ElasticSearch是一个分布式、可扩展、近实时的高性能搜索与数据分析引擎。在Go中经常使用的包有以下两个:
包
文档
Star 数量
olivere/elastic
https://olivere.github.io/elastic/
5.7k
elastic/go-elasticsearch
https://github.com/elastic/go-elasticsearch
3.2k
2.安装使用olivere/elastic
12# 安装v7的版本go get github.com/olivere/elastic/v7
3.配置3.1 编写配置文件1234567891011elastic: # 是否开启 enable: true # 服务地址,多个地址用逗号隔开 url: http://127.0.0.1:9200 # 是否转换请求地址,默认为true,当等于true时 请求http://ip:port/_nodes/http,将其返回的url作为请求路径 sniff: false # 心跳检测间隔 he ...
Charles
1.什么是CharlesCharles 是一个HTTP代理/HTTP监视器/反向代理,它使开发人员能够查看他们的机器和Internet之间的所有HTTP和SSL/HTTPS流量。这包括请求、响应和HTTP标头(其中包含cookie和缓存信息)。
2.安装Charles
下载地址:https://www.charlesproxy.com/download/
3.使用Charles3.1 Charles监听手机流量示例
输入 ifconfig, 查看本地IP
手机设置代理为电脑IP,配置端口为8888
下载证书,下载地址为:http://chls.pro/ssl
手机设置-通用-描述文件,安装证书
手机设置-通用-关于本机-证书信任设置,信任证书
charles: proxy ssl-proxy-setting-location添加:**:** 、*
Git
Git是什么?Git是一个免费且开源的分布式版本控制系统。
SVN和Git区别
Git理论基础将文件保存到Git时,所有数据都要进行内容的校验和(checksum)计算,并将此结果作为数据的唯一标识和索引。Git使用SHA-1算法计算数据的校验和,通过对文件的内容或目录的结构计算出一个SHA-1哈希值,作为指纹字符串。该字符串由40个十六进制字符组成,所有保存在Git数据库中的内容都是用此哈希值来做索引的,而不是靠文件名。
在Git中,文件有三种状态:
已提交(committed):表示该文件被保存到本地仓库,例如使用commit后的状态。
已修改(modified):表示本地仓库中的文件被修改了,但还没有提交保存,例如Git管理的文件被修改,但未使用add操作或commit操作时的状态。
已暂存(staged):表示把已修改的文件放到下次提交时要保存的清单中,例如使用add操作将文件添加到暂存区,等待使用commit操作提交保存到本地仓库中。
Git中的三个工作区域:
工作目录:本地实际操作的目录空间。
暂存区:新修改或新添加的文件暂时存储的空间,这个区域的文件等待被提 ...
正则表达式
界定符表示一个正则表达式的开始和结束
/[0-9]/ or #[0-9]# or {[0-9]}
正则表达式工具
regexpal
原子可见原子
Unicode编码表中用键盘输出后肉眼可见的字符有哪些?
标点; “ _ ? .等等
英文字母数字a-z,A-Z,0-9
汉字、日文、阿拉伯文等其他语言文字
∑,∈,∮,≌等数理化公式符号
其他可见字符
不可见原子
Unicode编码表中用键盘输出后肉眼不可见的字符有哪些?
换行符\n
回车\r
制表符\t
空格
其他不可见符号
元字符原子的筛选方式
| 匹配两个或者多个分支选择
[] 匹配方括号中的任意一个原子
[^] 匹配除方括号中的原子之外的任意字符
原子的集合
. 匹配除换行符之外的任意一个字符
\d 匹配任意一个十进制数字,即[0-9]
\D 匹配任意一个非十进制数字,即[^0-9]
\s 匹配任意一个不可见原子,即[\f\n\r\t\v]
\S 匹配任意一个可见原子,即[^\f\n\r\t\v]
\w 匹配任意一个大小写字母、数字或下划线,即[0-9a-zA-Z_]_
\W 匹配任意一个非大小写字 ...
PHP-web和框架(三):PHP-CGI/PHP-FPM
CGI与FastCGICGI程序:CGI程序的每一次web请求都会有启动和退出的过程,也就是最为人诟病的fork-and-execute模式(每次HTTP服务器遇到动态请求时都需要重新启动脚本解析器来解析php.ini,重新载入全部DLL扩展并初始化全部数据结构,然后把结果返回给HTTP服务器),很明显,这样的接口方式会导致php的性能很差,在处理高并发访问时,几乎是不可用的。所以,高并发时CGI程序的性能较差。
FastCGI程序:1.Web Server启动的同时,加载FastCGI进程管理器(nginx的php-fpm/IIS的ISAPI/Apache的Module)2.FastCGI进程管理器读取php.ini配置文件,对自身进行初始化,启动多个CGI解释器进程(PHP-CGI),等待来自Web Server的连接。3.当Web Server接收到客户端请求时,FastCGI进程管理器选择并连接到一个CGI解释器进程。Web Server会将相关环境变量和标准输入发送到FastCGI子进程即PHP-CGI进行处理。4.PHP-CGI完成处理后将数据按照CGI规定的格式返回给We ...
PHP-web和框架(二):模板、框架
模板模板的作用是实现PHP和HTML的分离,让前端和后端开发人员工作分离,互不干扰。
常用的模板引擎有smarty(使用PHP编写)、TinyButStrong、XTemplate、Savant等
框架什么是MVC?M: Model
V: View
C: Controller
PHP的开发框架有哪些?CI/TP/Yii2/Laravel/Lumen/Hyperf
什么是Laravel/CI/TP/Yii框架?
PHP-web和框架(一):web
session与cookie的区别是什么?sessionPHP的会话也称为session。PHP在操作session时,当用户登陆或访问一些初始页面时,服务器会为客户端分配一个sessionID。sessionID是一个加密的随机数字,在session的生命周期中保存在客户端。它可以保存在用户机器的cookie中,也可以通过URL在网络中进行传输。
用户通过sessionID可以注册一些特殊的变量,称为会话变量,这些变量的数据保存在服务器端。在一次特定的网站连接中,若客户端通过cookie或URL找到sessionID,那么服务器就可以根据客户端传来的sessionID访问会话保存在服务器端的会话变量。
session的生命周期只在一次特定的网站连接中有效,当关闭浏览器后,session会自动失效,之前注册的会话变量也不能再使用。具体的使用步骤如下:
1.初始化会话。在实现会话功能之前必须要初始化会话,初始化会话使用session_start()函数:
bool session_start(void)
该函数将检查sessionID是否存在,若不存在,则创建一个,并且能够使用预定义数组 ...
PHP进阶(三):文件管理
PHP 中文件操作函数有哪些?
PHP 文件操作时常用的函数
basename(): 返回路径中的文件名部分
dirname(): 返回路径中的目录名称部分
chown(): 改变文件所有者
copy(): 复制文件
unlink(): 删除文件
fclose(): 关闭打开的文件
file(): 把文件读取到数组
file_get_contents(): 读取文件到字符串
fopen(): 打开一个文件或 URL
fread(): 读取打开的文件
filesize(): 返回文件的大小
filetype(): 返回文件类型
fwrite(): 将内容写入文件
is_dir(): 判断指定的文件名是否是一个目录
PHP 获取一个文件内容的步骤
使用 fopen()函数打开 URL 或文件,然后通过 fgets()函数获取内容
file_get_contents()可以获得 URL 或文件的内容,把整个文件内容读入到一个字符串中
通过 fsockopen()函数打开 URL 或文件,可以通过 get 或 post 方式获取完整的数据,包括 head ...
PHP进阶(二):缓存
缓存针对缓存,主要从以下几个方面进行考虑:
页面缓存:把动态页面解析后保存为静态页面缓存起来
数据缓存:将后台数据缓存起来
查询缓存:将高频率查询的数据及时缓存起来,下一次相同的查询,就直接返回缓存的数据
按内容的修改进行缓存:这是针对高频率的查看、低频率的修改需求而使用的方法
内存缓存
PHP进阶(一):时间和日期管理
如何输出年-月-日?1.表示年可以用
大写的 Y(年份的四位数字)
小写 y(年份的两位数字)
2.表示月份可以用
大写 F(月份的英文全写)
大写 M(月份的三个缩写字符)
小写 m(月份的数字,带前导 0)
小写 n(月份的数字,不带前导 0)
3.表示日可以用
小写 d(日的数字,带前导 0)
小写 j(日的数字,不带前导 0)
大写 S 表示日期的后缀(如st/nd/rd/th)
如何输出时-分-秒?1.表示小时可以用
字母 g 表示小时,不带前导 0;
字母 h 表示小时,带前导 0
小写 g、h 表示 12 小时制,大写 G、H 表示 24 小时制
2.表示分钟可以用
小写 i 表示分钟,带前导 0
3.表示秒数可以用
小写 s 表示秒数,带前导 0
如何输出闰年-星期-天?1.大写 L 表示判断今年是否为闰年,若为真,返回 1;否则返回 0
2.小写 l 表示当天是星期几的英文全写
3.大写 D 表示星期几的三个字符缩写
4.小写 w 表示星期几,数字形式表示,大写 W 表示今年的第几周
5.小写 t 表示当前月份有多少天,小写 z 表示今天 ...
PHP基础(十四):其他
匿名函数、回调函数、闭包匿名函数:没有确定函数名的函数,只能在创建时调用或作参数使用。
回调函数:把函数作为参数传入另一个函数中使用。如array_map/array_filter/call_user_func_array等函数。
闭包: 一种对作用域进行封装的方式,使得函数能够使用父作用域中的变量。
PHP基础(十三):内存管理
什么是内存管理?内存管理主要是指程序运行时对计算机内存资源的分配、使用和释放等技术,内存管理的目标是高效、快速地分配内存,同时及时地释放和回收内存资源。内存管理主要包括是否有足够的内存供程序使用,从内存池中获取可用内存,使用后及时销毁并重新分配给其他程序使用。
在PHP开发过程中,若遇到大数组等操作,那么可能会造成内存溢出等问题。一些常见的处理方法如下:
通过ini_set('memory_limit', '64M')方法重置PHP可以使用的内存大小,一般在远程主机上是不能修改php.ini的,只能通过程序设置。注意:在safe_mode下,ini_set()函数会失效
另外可以对数组进行分批处理,及时销毁无用的变量,尽量减少静态变量的使用,在需要数据重用时,可以考虑使用引用(&)。同时对于数据库、文件操作要及时关闭,对象使用完要及时调用析构函数释放资源空间等
及时使用unset()函数释放变量,注意:
a. unset()函数只能在变量值占用内存空间超过256字节时才会释放内存空间
b. 只有当指向该变量的所有变量都销毁后,才能成功 ...
PHP基础(十二):异常处理和错误处理
异常处理和错误处理程序的异常是指预先指定的程序在错误发生时,改变程序运行的正常顺序,确保程序在可控制的范围内运行。在程序运行过程中,当异常被触发时,主要做以下操作:
保存当前代码的状态信息
当前执行的代码会被切换到预定义的异常处理函数中
有些情况下,处理器会从保存的代码状态处终止程序运行等
什么是异常处理和错误处理?当运行的程序发生异常被抛出时,程序不会继续执行异常处后续的代码,PHP会尝试查找匹配的catch代码块。若异常没有被捕获,那么将会发生严重的错误,程序会终止或者不受控制地执行。
error_reporting()的作用是什么?设置PHP的错误报告级别并返回当前级别。函数原型为error_reporting(report_level)。
如何进行异常捕获与处理?处理过程主要包括:
try块内的代码是可能会抛出异常的代码。若没有抛出异常,则代码块正常执行
throw用来强制抛出异常
catch表示具体的捕获异常的代码块,用来处理发生异常后的处理逻辑
如何实现自定义的异常类?主要步骤如下:
自定义的异常类继承了基类Exception,这样就具有了基类的属性和方法
...