-
[PHP] php作为websocket的客户端实时读取推送日志文件
所属栏目:[大数据] 日期:2021-05-21 热度:179
首先要使用composer来下载一个第三方扩展就可以实现PHP的websocket客户端,直接在当前目录生成下composer.json文件就可以了 composer require textalk/websocket require( ' vendor/autoload.PHP ' );use WebSocketClient;$client = new Client( " ws://echo[详细]
-
[PHP] PHP7以上版本的引用计数不同的困惑
所属栏目:[大数据] 日期:2021-05-21 热度:135
按正常理解PHP的变量是引用计数,第一次创建变量refcount会是0,当把这个变量赋给新的变量时,refcount会加1 但是,经过测试,PHP7.0.33下和PHP7.3.11下效果都不是按照这个来的 代码: $val = "taoshihan best" ;xdebug_debug_zval( 'val' ); $copy = $val ;[详细]
-
[PHP] websocket协议的生成
所属栏目:[大数据] 日期:2021-05-21 热度:197
websocket的概念理解 websocket协议是基于TCP的一种新的网络协议,实现了浏览器与服务器全双工(full-duplex)通信.websocket借用http请求进行握手,相比正常的http请求,多了一些内容。 连接请求的内容是: GET / HTTP/1.1Connection:UpgradeHost:127.0.0.1:808[详细]
-
[PHP] stream_set_blocking非阻塞模式影响fgets fread函数
所属栏目:[大数据] 日期:2021-05-21 热度:114
当设置socket为非阻塞时,fread或者fgets函数会立即返回结果,而不需要等待有输入,测试过程可以使用vscode的debug模式来进行 当不设置这一项时,如果客户端没有输入会一直阻塞在这里等待客户端的输入,当加上这个设置后就不会在这等着了 测试代码 ? PHP $main_so[详细]
-
[PHP]PHP中申明 declare(strict_types=1)的作用
所属栏目:[大数据] 日期:2021-05-21 热度:74
strict_types=1 针对参数类型开启严格模式,进行数据类型检验,默认是弱类型校验 哪个文件写了declare,哪个文件中的所有代码就需要检查 declare (strict_types=1 ); function foo(): int{ return 1.11 ;} echo foo(); ?[详细]
-
[PHP]新版的mongodb扩展安装和使用
所属栏目:[大数据] 日期:2021-05-21 热度:200
旧版的mongo扩展已经不推荐使用了,在PHP7以上一般是安装和使用新版的mongodb扩展 ubuntu下 apt-get install PHP-mongodb 例如下面的代码进行了查询和插入集合操作 ? PHP class DocModel{ public $mongoManger = null ; $dbName ='coms' public function __c[详细]
-
[PHP] 接口增加recaptcha行为验证
所属栏目:[大数据] 日期:2021-05-21 热度:72
需要先翻墙创建一个谷歌账户和创建recaptcha验证的网站域名,获取到两个secrect https://www.google.com/recaptcha/admin ? 前端增加html和js代码,例如 input type ="hidden" name ="token" id ="token" / script src ="https://www.recaptcha.net/recaptcha/[详细]
-
[HTTP]HTTP/1.1 协议Expect: 100-continue
所属栏目:[大数据] 日期:2021-05-21 热度:80
? ?在追踪请求时发现了这么一个http头 基础知识背景: 1)“Expect: 100-continue”的来龙去脉: HTTP/1.1 协议里设计 100 (Continue) HTTP 状态码的的目的是,在客户端发送 Request Message 之前,HTTP/1.1 协议允许客户端先判定服务器是否愿意接受客户端发[详细]
-
[Php] windows下使用composer出现SHA384 is not supported by yo
所属栏目:[大数据] 日期:2021-05-21 热度:118
composer的版本太低了,需要更新composer windows的安装使用 https://getcomposer.org/Composer-Setup.exe 报这个错Failed to decode zlib stream,把下面的composer.phar移动到PHP.exe所在目录,重试就好了 linux下用下面的命令行重新安装,windows下也可以用 P[详细]
-
[PHP] time_wait与长连接短连接
所属栏目:[大数据] 日期:2021-05-21 热度:148
服务端上查看tcp连接的建立情况,直接使用netstat命令来统计,看到了很多的time_wait状态的连接.这些状态是tcp连接中主动关闭的一方会出现的状态.该服务器是Nginx的webserver监听80端口,搭配的PHP-fpm监听9000端口,连接其他服务器数据库3960端口,连接其他服务[详细]
-
[PHP] PHP-FPM的access日志error日志和slow日志
所属栏目:[大数据] 日期:2021-05-21 热度:134
PHP-FPM的错误日志建议打开,这样可以看到PHP的错误信息: 一般是这个配置路径 /etc/PHP/7.3/fpm/pool.d/www.conf,日志目录如果需要自己建立PHP目录,一定要把权限赋给www-data用户,否则没有创建目录的权限,就无法记录日志 chown www-data:www-data /var/[详细]
-
[PHP] 新版本PHP7.4与新版本MySQL8认证问题
所属栏目:[大数据] 日期:2021-05-21 热度:63
MysqL8的默认密码加密方式是caching_sha2_password,PHP7.4连接MysqL的加密方式也为caching_sha2_password,这个地方要注意。 当为了兼容旧版的客户端不只是PHP,还有在主从复制的时候也会有问题,MysqL8的认证方式改回了MysqL_native_password。如果使用PHP[详细]
-
[PHP] PHP PDO与mysql的连接单例防止超时情况处理
所属栏目:[大数据] 日期:2021-05-21 热度:198
这个数据库类主要处理了单例模式下创建数据库对象时,如果有两次较长时间的间隔去执行sql操作,再次处理会出现连接失败的问题,利用一个cache数组存放pdo对象与时间戳,把两次执行之间的时间进行了比较,如果间隔超过了10秒就再次new PDO创建连接,没有超过的情况[详细]
-
[PHP] pmap可以查看进程占用内存的详细情况
所属栏目:[大数据] 日期:2021-05-21 热度:173
pmap后面跟进程id,就可以查看进程的详细情况了,例如下面PHP的进程 可以看到PHP扩展占用内存的情况,方便进行查询问题 00007fb3fa4bf000 44K r-x-- /usr/lib64/PHP/modules/ MysqL.so00007fb3fa4ca000 2048K ----- /usr/lib64/PHP/modules/ MysqL.so00007fb3fa[详细]
-
[PHP] error_reporting(0)可以屏蔽Fatal error错误
所属栏目:[大数据] 日期:2021-05-21 热度:159
按照以前的印象,error_reporting(0)屏蔽不了PHP的Fatal error级别的错误。 但是今天我遇到了一个问题才发现,它竟然可以屏蔽任何错误,包括Fatal error,浏览器会看不到500错误码,显示的是200,PHP-fpm下的PHP错误日志里没有任何输出,Nginx下的错误日志里[详细]
-
[PHP] 配置vscode的语法检测消除提示Cannot validate since no P
所属栏目:[大数据] 日期:2021-05-21 热度:52
默认下载完vscode什么都不做,会提示一下信息 Cannot validate since no PHP executable is set. Use the setting 'PHP.validate.executablePath' to configure the PHP executable. 打开文件-首选项-setting,把PHP的执行路径填进去,前提是本机已经安装了P[详细]
-
[视频教程] 基于redis的消息队列实现与思考
所属栏目:[大数据] 日期:2021-05-21 热度:130
使用redis的list列表来实现消息队列功能,相信大家都听过消息队列,但是在业务中可能并没有真正去使用它。在公司项目中正好有个场景使用到了消息队列,因此就来说一下流程。 在web界面上有个功能是群发邮件,用户可以创建一个5000邮箱的邮件列表,编辑完邮件[详细]
-
[PHP] 循环查看php-fpm的内存占用情况
所属栏目:[大数据] 日期:2021-05-21 热度:51
在webmail的业务中进行发信,如果携带了附件,会把附件拼接内嵌到邮件正文里,这时会极大的占用内存,可以使用以下命令查看fpm的进程内存占用 ps --no-headers --sort -RSS -o "RSS,pid,cmd" -C PHP-fpm 这句的意思是,打印RSS,cmd列,并且按RSS进行排序,RSS就是占[详细]
-
[PHP] CentOS下搭建下PHP的运行环境
所属栏目:[大数据] 日期:2021-05-21 热度:91
在公司里面有分配的测试机,所有的开发代码都运行在测试机里面.因为公司的测试机机房退租,所以要在新申请的几台测试机上搭建开发环境.开发环境尽量做到和线上的环境一致,包括代码的目录路径,运行程序的进程用户,日志的目录等等.我的测试机的linux版本还是cent[详细]
-
[视频教程] ubuntu系统下以守护进程方式安装使用Redis
所属栏目:[大数据] 日期:2021-05-21 热度:198
直接访问redis的中国官网,在下载部分,可以看到安装和使用的方式。 wget http://download.redis.io/releases/redis-5.0.4.tar.gz tar xzf redis-5.0.4.tar.gz cd redis-5.0.4 make ./src/redis-server 默认启动是使用的前台任务的形式,一旦关闭就退出服务[详细]
-
[PHP] Ubuntu快速安装起PHP7.4
所属栏目:[大数据] 日期:2021-05-21 热度:83
先安装一下这个命令 add-apt-repository apt-get install software-properties-common 添加第三方源: add-apt-repository ppa:ondrej/PHP apt-get update 安装PHP: apt-get install PHP7.4 PHP7.4-fpm PHP7.4-MysqL PHP7.4-gd PHP7.4-mbstring service PHP7[详细]
-
[日常] 高并发抢购方案的思考
所属栏目:[大数据] 日期:2021-05-21 热度:108
经常在面试中被问到如何设计一个高并发环境下的抢购方案,虽然网上的资料已经很多了,但是都是很简单的说了一些用队列之类的套话,没有更详细的细节考虑.被问的实在是太多了,不得已我也仔细想想这些该怎么设计.抛开运维阶段的多层负载均衡,直接只说PHP的业务层[详细]
-
[视频教程] redis中的bit运用统计用户在线天数
所属栏目:[大数据] 日期:2021-05-21 热度:91
位运算在redis中非常的方便使用,并且理由利用这个可以实现很多特殊的功能。这也迫使我去研究更多的redis提供的函数,只有研究的多,思路才能够更加开放。今天我就对strings下面的几个函数进行了测试,也收获颇丰。 使用setBit和bitCount可以实现用户活跃天[详细]
-
[Linux] 纯净ubuntu快速搭建宝塔面板
所属栏目:[大数据] 日期:2021-05-21 热度:156
宝塔官方建议是纯净的系统,我使用docker运行一个ubuntu容器,模拟一个纯净的系统,这样也不会影响到我的其他服务。 docker run --name baota -id -p 8888:8888 ubuntu docker exec -it baota bash apt-get update apt-get install wget vim 更改以下源地址[详细]
-
某业务自助开通账户问题排查
所属栏目:[大数据] 日期:2021-05-21 热度:121
现象:销售反馈用户自己开通的账户,只收到了提示邮件,账户没有实际生成 前因: 1. 用户开通账户调用接口后,在该接口中再次调用销售系统接口实际开通账户 2. 有同事开发另一功能时提交过销售系统的代码 排查流程: 1. webmail.log中记录了调用销售系统的参数和返[详细]