Redis 提示 protocol error, got 'u' as reply type byte 解决方案

 遇到一个奇怪的问题,在 php 中使用 workerman 或者传统 pcntl_fork 的开启子进程时 大约十几分钟就会出现一段异常报错 protocol error, got 'u' as reply type byte 初步诊断是redis提示的 大致意思是 协议错误,得到'u'作为回复类型字节 。异常信息protocol error, got 'u' as reply type byte通过代码排查以及报错提示初步判断是redis的问题原因分析 传统 cli 下不会出现这个问题,只有 workerman 下以及 pcntl_fork 的开启子进程时 十几分钟后才会出现。 已知 workerman 底层使用的也是 pcntl_fork 我们直接分析这个函数。 pcntl_fork 函数 先创建主进程然后在根据需要创建N个子进程,而redis使用 单例模式 或者使用 static 来进行保存连接对象时候并且在主线程内有创建这个连接,那么就会出现以上 protocol error, got 'u' as reply type byte 错误 这种异常一般称为...

PHP,Linux,解决方案,其他 2023-12-18 PM 192次 0条

使用virtualbox挂载文件夹教程

 下面记录了我们在使用 virtualbox 虚拟机命令行模式下挂载文件夹的步骤及流程。进入设置设置共享文件夹首先选择右侧虚拟机选择设置按钮点击添加共享文件夹选择文件夹配置我们选择自动挂载,固定分配安装增强功能进入系统后我们选择顶部 设备 选择安装增强功能创建挂载增强功能文件夹mkdir /mnt/cdrom挂载增强功能mount /dev/cdrom /mnt/cdrom安装更新软件包yum install -y gcc gcc-devel gcc-c++ gcc-c++-devel make kernel kernel-devel bzip2执行安装增强功能cd /mnt/cdrom/ && ./VBoxLinuxAdditions.run创建共享文件夹mkdir /mnt/project更新软件包yum update重启服务器reboot执行挂载命令sudo mount -t vboxsf project /mnt/project可以看到我们已经使用virtualbox挂载文件夹成功了。开机自动挂载修改配置文件vi ~/.bashrc

Linux,解决方案 2023-06-16 PM 877次 0条

php打包扩展zephir避坑安装指南

 本文主要记录了zephir各种安装失败,打包失败的正确姿势,完美解决各个版本php打包php打包扩展zephir避坑安装指南,一旦拥有别无所求。参考文档zephir官方网站zephir官方中文文档zephir中文文档(备用)")使用系统镜像 我们使用2207版本centos7安装系统CentOS-7-x86_64-Minimal-2207-02.iso系统环境 我们通过宝塔面板来安装指定php版本,当然你也可以使用其他方式安装。宝塔安装Git 如果提示找不到git命令我们可以通过以下命令安装一下gityum install gitzephir安装步骤首先我们来到系统根目录将 php-zephir-parser 通过 Git 方式 Clone 下来githubgit clone https://github.com/zephir-lang/php-zephir-parsergiteegit clone https://gitee.com/laiwi/php-zephir-parser.git国内 Clone 失败可以使用 gitee安装编辑PHP环境zephir_parser.s...

PHP,Linux,解决方案 2023-06-16 AM 377次 0条

解决Liunx安装找不到最新版本软件方案

 我们在使用linux,centos等系统想要安装最新版软件时候发现无论怎安装都是老版本的软件,下面我们通过安装 PHP8.1 , php-devel 等软件来演示一下怎么将linux软件库更新到最新版本。步骤下面我们使用 centos7 来作为演示系统查看当前系统软件库列表 我们通过以下命令可以查看更新之前的软件库内软件的版本。sudo yum search all php-devel 一般情况下 新安装的系统软件库版本比较老旧并没有最新版本的软件。安装 epel-releasesudo yum install epel-release安装最新版 remi 源 Remi 源大家或许很少听说,但是我们强烈推荐,尤其对于不想编译最新版的 Linux 使用者, 因为 Remi 源中的软件几乎都是最新稳定版。sudo yum -y install https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm安装 yum-utilssudo yum -y install yum-utils最后我们再次查看当前系统软...

PHP,Golang,Linux,解决方案 2023-06-13 PM 358次 0条

阿里云redis数据库迁移工具RedisShake

 RedisShake是阿里云开源的高性能redis数据库迁移工具简单易用快速,上手非常简单 现在 redis-shake 有两个主版本:redis-shake 2.x:持续更新 3 年,目前停止更新与答疑,遇到问题推荐尝试 3.x 版本。redis-shake 3.x:基于 redis-shake 2.x 重写,代码可读性高,性能较佳。安装RedisShake安装方式有两种二进制包安装直接下载打包后的压缩包二进制包从版本下载:https://github.com/alibaba/RedisShake/releases从源代码编译git clone https://github.com/alibaba/RedisShake cd RedisShake sh build.sh下载打包压缩包下载并解压:https://github.com/alibaba/RedisShake/releases/download/v3.1.10/redis-shake-linux-amd64.tar.gz配置RedisShake 点击配置 scan.toml , restore.toml , sync...

软件工具,数据库,Linux,解决方案 2023-03-13 PM 450次 0条

新手也能看懂的jenkins上传文件到阿里云oss脚本

 分享一段新手也能看懂的jenkins上传文件到阿里云oss脚本,便于其他同学快速入门.步骤 下面实现了代码从仓库到上传文件到阿里云oss过程,分别是拉取仓库代码打包代码上传清理当前工作空间源码pipeline { agent any parameters{ string(name:'git_url',defaultValue:'https:/xxxx.cn/xzz/xxxxx.git',description:'仓库地址') string(name:'version',defaultValue:'main',description:'版本') string(name:'build_name',defaultValue:'xxxxxx',description:'打包名称') } stages { stage('拉取') { steps { deleteDir() checkout([ $class: 'GitSCM', ...

Linux,解决方案,其他 2022-12-28 AM 404次 0条

新手也能看懂的jenkins部署脚本

 分享一段新手也能看懂的jenkins部署脚本,便于其他同学快速入门.步骤 下面实现了代码从仓库到目标服务器的部署过程,分别是拉取仓库代码配置服务配置打包代码检查目标服务器环境部署代码到目标服务器发布代码到目标服务器指定位置清理当前工作空间源码pipeline { agent any parameters{ string(name:'site_hash',defaultValue:'deploy_001',description:'站点名称') string(name:'git_url',defaultValue:'https://xxx.com/xxxx.git',description:'仓库地址') string(name:'version',defaultValue:'v1.0.0',description:'版本') string(name:'build_name',defaultValue:'deploy_001',description:'打包名称') strin...

Linux,其他 2022-12-21 AM 252次 0条

解决使用idea,phpstorm等开发工具git自动变为修改状态

 本文记录解决使用idea,phpstorm等开发工具在windows下提交代码后在linux下同样使用相同工具代码全部变为git修改状态如图。 通过上面的图片我们可以看到标记为修改状态的代码文件什么都没有修改但是因为跨平台出现了git修改状态,经过排查发现是 windows 和 linux 下换行转换的问题。windows下默认idea换行符 windows下默认换行符为 CRLF 格式linux下默认默认idea换行符 windows下换行符为 LF 格式解决跨平台默认idea换行符问题 既然我们找到了问题那么就好解决了我们只需要配置下git拉去或者提交代码时候保持原样或者指定格式即可。提交时转换为 LF 检出时转换为 CRLF (推荐windows)git config --global core.autocrlf true提交时转换为 LF 检出时不转换(推荐unix/mac)git config --global core.autocrlf input提交检出均不转换换行符git config --global core.autocrlf false拒绝提交包含混合换行...

PHP,Linux,解决方案 2022-01-22 AM 1113次 0条

ab压测工具的使用

ab压测工具 是一款 跨平台 的 轻量级 的压测工具,本文我们将简单介绍下 ab压测工具 的使用方法。centos安装ab压测工具yum -y install httpd-tools常用命令查看版本ab -V帮助ab -h并发测试并发5,测试100个请求,请求目标地址百度ab -c 5 -n 100 https://www.baidu.com/主要使用参数-c 即concurrency用于指定的并发数。-n 即requests用于指定压力测试总共的执行次数。-t 即timelimit等待响应的最大时间(单位:秒)。-b 即windowsizeTCP发送/接收的缓冲大小(单位:字节)。-p 即postfile发送POST请求时需要上传的文件,此外还必须设置-T参数。-u 即putfile发送PUT请求时需要上传的文件,此外还必须设置-T参数。-T 即content-type用于设置Content-Type请求头信息,例如:application/x-www-form-urlencoded,默认值为text/plain。-v 即verbosity指定打印帮助信息的冗余...

软件工具,Linux 2022-01-04 PM 967次 0条

phpstorm配置使用comoposer远程php版本

 在开发环境中我们可以通过 phpstorm 配置使用 comoposer 远程虚拟机的指定版本 php 。配置本地文件和虚拟机文件共享 例如本地 E:\wwwroot = /www/wwwroot使用安装,更新,显示日志 打开compose.json文件这个时候顶部会显示三个可点击文字 install/update/show log 。清理composer缓存 点击 clear Cache 清理 composer 缓存诊断环境 点击 diagnose 诊断 composer 环境模拟更新包 点击 simulate update 模拟更新 composer 包更新composer版本 点击 self-update 更新 composer 版本测试运行composer更新后运行的脚本 配置 composer 静默运行 --no-interaction

PHP,软件工具,Linux 2022-01-04 PM 888次 0条