技术饭 PHP利用websocket实现客户端请求ws协议功能

PHP利用websocket实现客户端请求ws协议功能,利用websocket实现PHP对ws协议的请求,这里PHP是作为一个客户端通过ws协议请求服务,而不是作为服务端,这个首先要区分下。ws协议是websocket的东西,现在也有很多东西可以实现,如workerman、swoole,但是说实话,看到workerman的文档,有介绍怎么实现这个功能,但是个人是感觉真的很头疼,一切都是基于cli,基本都是用到命令行去执行,一个类似curl请求获取结果的功能还要去捣鼓这些东西,真是呵呵哒。swoole就不说了,首先Windows都不支持(当然,现在基本都是用Linux,但是个人感觉不是很通用)。

阅读全文 » 12天前
2021年04月02日

技术饭 PHP使用Redis的Hash(哈希表)命令

PHP使用Redis的Hash(哈希表)命令,本文介绍了Redis的Hash(哈希表)命令:hDel,hExists,hGet,hGetAll,hIncrBy,hIncrByFloat,hKeys,hLen,hMGet,hMSet,hSet,HSetnx,hVals作用和php的使用

阅读全文 » 12天前
2021年04月02日

技术饭 thinkphp5将json对象转数组

thinkphp5将json对象转数组,tp5获取得到的数据是json格式,但是无法通过数据的方式直接获取,以前是有默认转换,现在只能通过 getContent() 方法来获取内部的数据了。

阅读全文 » 12天前
2021年04月02日

技术饭 php7.2微信公众平台消息安全模式的加密及解密

php7.2微信公众平台消息安全模式的加密及解密,php7.2发布后新特性吸引了不少PHPer,大家都在讨论新特性带来的好处与便利。但是从php7.0 升级到 php7.2 废弃(过时)了一个在过去普遍应用的扩展(mcrypt扩展)。官方提供了相应的解决提示,却没有提供更详细的解决办法。于是就各种报错,当然了只能改方法了~~~

阅读全文 » 109天前
2020年12月26日

技术饭 php 7.2 安装 mcrypt 扩展

centos版本升级到8,PHP的黄金升级 php 7.2 后,使用微信提供的加解密代码时,提示 call to undefined function mcrypt_module_open(),mcrypt_module_open()方法不存在,应该是PHP升级之后可能扩展被废弃了吧,查阅相关资料知晓,mcrypt 扩展从 php 7.1.0 开始废弃;自 php 7.2.0 起,会移到 pecl。

阅读全文 » 113天前
2020年12月22日

技术饭 PHP查询用户排名名次、Mysql查询用户排名名次的方法

PHP查询用户排名名次、Mysql查询用户排名名次的方法,最近做了用户排行榜,那么就整理了查询用户排行的一些代码,主要分为两部分:PHP、Mysql两者独立查询用户排名信息,当然查询的是所有用户的排名以及当前用户的排名信息。

阅读全文 » 130天前
2020年12月05日

技术饭 前端js加密后台php解密,自定义加密方法

前端js加密后台php解密,自定义加密方法,前端html输入用户名密码之后,使用http传到后台,post的内容全部是明文,用户名和密码通过抓包工具可以很容易获取到,所以需要在http传输之前对密码进行加密处理,php收到post内容之后进行解密,然后进行后续认证处理。

阅读全文 » 131天前
2020年12月04日

技术饭 PHP简单对称加密算法之加密、简单对称加密算法之解密,以及简单的混淆加密。

PHP简单对称加密算法之加密、简单对称加密算法之解密,以及简单的混淆加密。平时我们使用的PHP加密方法都是一些不可逆的加密函数为:md5()、sha1()、crypt()等。md5() 用来计算 MD5 哈稀。语法为:md5(); crypt() 将字符串用 UNIX 的标准加密 DES 模块加密。这是单向的加密函数,无法解密。可逆转的加密有:base64_encode()、urlencode() 相对应的解密函数:base64_decode() 、urldecode() 。base64_encode() 将字符串以 MIME BASE64 编码。此编码方式可以让中文字或者图片也能在网络上顺利传输。 它的解密函数为:base64_decode(); 将复回原样。urlencode() 将字符串以 URL 编码。例如空格就会变成加号。它的解密函数为:urldecode(); 将复回原样。

阅读全文 » 135天前
2020年11月30日

技术饭 PHP二维数组去除重复项

PHP的一维数组正常使用array_unique()方法直接去除重复项即可,但是二维数据似乎没有固定的内置函数,这时候就需要自己手动些方法处理了,那如果去除二维数组的重复项呢?研究了一会,大概写了简略版本的去重方案。

阅读全文 » 147天前
2020年11月18日

技术饭 解决Unable to find the wrapper "https"的二种方法

​这个问题其实通php加载openssl模块来解决,是件挺容易的事,但是牵扯到用什么linux系统,以及是用多少位的linux系统,以及php自身的版本问题,以及是不是手动安装,还是管理工具安装时,其实有的时候,还是比较麻的。

阅读全文 » 152天前
2020年11月13日

技术饭 PHP mkdir函数创建目录失败

PHP 编程中,经常会遇到文件的上传,文件夹的创建等等。其中会用到一个非常重要的函数:mkdir;它的作用是创建一个目录,用来存放上传文件的文件夹。在上传过程中如果涉及多级目录的创建,经常会遇到错误,怎么如何处理呢??

阅读全文 » 152天前
2020年11月13日

技术饭 CentOS8 Nginx+PHP7.2+mysql8+redis+git的配置以及注意事项

CentOS8 Nginx+PHP7.2+mysql8的配置以及注意事项,CentOS8的配置相对Contos7比较简单。在以下讲解中会详细讲解到两个系统nginx、php、mysql8的安装和配置。目前nginx1.14、php7.2、mysql8都已经加入centos8官方源,使用和配置都简单很多。

阅读全文 » 155天前
2020年11月11日

技术饭 PHP7.2 redis扩展的安装

PHP7.2 redis扩展的安装,一.下载php-redis包,解压:wget http://pecl.php.net/get/redis-4.0.2.tgz;tar -xzvf redis-4.0.2.tgzcd redis-4.0.2;二.通过phpize生成编译configure配置文件,编译&&安装;没有配置环境变量的话,必须使用 绝对地址 ,例子:/usr/php/phpize;phpize;指定php配置文件的位置;./configure --with-php-config=/usr/bin/php-config

阅读全文 » 155天前
2020年11月10日

技术饭 nginx 502 bad gateway 解决 connect() failed (111: Connection refused) while connecting to upstream

nginx 502 bad gateway 解决 connect() failed (111: Connection refused) while connecting to upstream,新安装了centos8,配置了php7.2,还没怎么用,一直报错,烦都烦死。多方求证最后才知道是php的配置是:fastcgi_pass 127.0.0.1:9000; 但是php-fpm/www.conf里配置的监听listen不是这个,所以就报错了。

阅读全文 » 156天前
2020年11月10日

技术饭 nginx 访问 .php文件变成下载

Nginx 浏览.php文件变成下载:这是因为nginx没有设置好碰到php文件时,要传递到后方的php解释器。看看你的nginx.conf配置,里面有没有这样的设置:location ~ .*\.php$ { fastcgi_pass 127.0.0.1:9000;}

阅读全文 » 156天前
2020年11月09日

技术饭 PHP短网址生成逻辑与实现

​微博短网址大家一定不陌生,如:http://t.cn/ 这个网站点开就直接跳转到了微博,是不是看起来很方便,但应该很多人都不知道是怎么实现的,我们今天就来讲讲PHP生成短网址的方法。PHP生成短网址的:如果把短网址还原了,你知道是个什么样子的吗?可能你看到的短网址都是这个样子:http://p-d-d.cn/T0f121,其实他还原了说不定就是这个样子:https://www.copylian.com/,按这个格式可以知道这个短网址其实是通过代码将长的网址:https://www.copylian.com/ 转成 http://p-d-d.cn/T0f121 ,然后短网址做个重定向到长网址就好了。

阅读全文 » 159天前
2020年11月06日

技术饭 TP5使用unlink删除文件报错:Resource temporarily unavailable

TP5使用unlink删除文件报错:Resource temporarily unavailable,今天在TP5内使用unlink删除上传图片的时候报错了。情况是 $info = $file->move();获得 $info 变量后 $info->getRealPath() 通过该方法获取上传文件真实路径,然后直接unlink时报错 Resource temporarily unavailable

阅读全文 » 168天前
2020年10月28日

技术饭 php判断当前是http还是https

php判断当前是http还是https,使用 $_SERVER['HTTPS'] 的值来判断,或者通过 $_SERVER['SERVER_PORT'] 的端口号443来判断是否是https,如果is_ssl()方法返回true则是https,如果返回false则是http。

阅读全文 » 186天前
2020年10月10日

技术饭 PHP创建PDF文档,相应的PHP类库有:TCPDF、mPDF、Dompdf等

PHP创建PDF文档,相应的PHP类库有:TCPDF、mPDF、Dompdf等,如果要使用PHP动态的创建PDF文档,目前有许多开源的PHP创建PDF的类库,今天介绍一款PDF库:TCPDF,TCPDF是一个用于快速生成PDF文件的PHP5函数包。TCPDF基于FPDF进行扩展和改进,增强了实用功能。

阅读全文 » 197天前
2020年09月29日

技术饭 PHPMailer实现PHP的邮件发送,附带附件

PHPMailer发送邮件,附带附件,phpMailer 是一个非常强大的 ph p发送邮件类,可以设定发送邮件地址、回复地址、邮件主题、html网页,上传附件,并且使用起来非常方便。

阅读全文 » 203天前
2020年09月23日

技术饭 vue.js前端获取thinkphp5.1后端api接口的验证码,验证码一直验证失败

最近需要做验证码接口,前端使用的vue.js接收,遇到如下问题:thinkphp5.1框架默认生成的验证码是session方式给到前端用户,验证码图片生成没有问题,出现问题是在验证验证码的步骤:每次验证都是显示验证码错误。测试了才知道api接口模式,访问不同接口的生成才session_id是不一样的,所以导致生成验证码与确认验证码的接口两个session_id不一致,那么解决问题的方式就是设置同一个session_id就可以了。

阅读全文 » 207天前
2020年09月19日

技术饭 POST参数超过1000后,$_POST中1000以后的参数丢失,但是php5.6 max_input_vars 修改无反应?

之前做了图片文件上传到阿里云oss存储中,阿里本身的传输没有问题,但是在当保存到自己数据库的时候就报错了,第一次报错是id不存在,本来数据表就是一条记录,更新的主键ID竟然不存在,查了下js传过过来的formdata参数正常,但是$_POST就只仅仅取到了一部分数据,剩余的数据丢失了,想想应该是php限制的问题,最终确定是参数: max_input_vars 默认限制了1000,本来是改成了5000,但是测了还是没效果,查了phpinfo()发现:php-fpm重启之后 max_input_vars 的值并没有改变,多方查证发现服务器的php配置原来是外包公司配置的,外包公司把配置文件改到了 php-fpm.conf 文件里面,所以原始的php.ini中的参数就失效了,无论设置成什么都会失效。

阅读全文 » 212天前
2020年09月14日

技术饭 PHP SDK上传文件到阿里云oss文件存储Bucket

对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。最近业务需求做了PHP SDK上传文件到阿里云oss文件存储Bucket的相关工作。

阅读全文 » 223天前
2020年09月03日

技术饭 PHP WSG84转BD09 地理坐标系互转

最近使用了微信公众号的地理定位服务,获取得到的纬度与经度用来转换成功详细地址信息,腾讯使用的地图地位坐标系是WSG84,如果获取地理位置信息使用的是腾讯地图服务的话就不需要转换,如果使用的是百度或者其他精度的坐标系,则需要进行转换。

阅读全文 » 239天前
2020年08月18日

技术饭 php解析ip地址的免费纯真IP数据库

之前使用的tp3的UTFWry.dat作为ip解析,但是感觉这个类有点旧,还比较难用,数据不多,如果需要其他信息还需要重新修改IpLocation.php类,淘宝腾讯提供的免费第三方获取ip的方式不太稳定,所以找了找还是基于qqwry.dat的ip库相对合适。

阅读全文 » 241天前
2020年08月16日

技术饭 think\cache\Driver::unserialize()经常报Error at offset... bytes这样的错误

think\cache\Driver::unserialize()经常报Error at offset... bytes这样的错误,这几天做了抢红包的活动,请求高并发之后,程序出现了报错,数据无法写入数据库,查询调试发现报的错误是:unserialize(): Error at offset 284217 of 284296 bytes,后来是清除了缓存才解决了问题,可是问题是总不能一直清除缓存吧!!!

阅读全文 » 242天前
2020年08月15日

技术饭 PHP实现微信支付的现金红包、企业付款到零钱功能

企业付款提供由商户直接付钱至用户微信零钱的能力,支持平台操作及接口调用两种方式。具有免费、快速到账、灵活、安全等优点。商户可以使用企业付款,用于如:费用报销、员工福利、用户奖励等。微信红包,2014年春节一推出即受到广大用户好评,引发全民抢红包热潮。现将微信红包打造成“现金红包”,作为一款定向资金发放的营销工具,供商户使用。用户在客户端领取到红包之后,所得金额进入微信钱包,可用于转账、支付或提取到银行卡。

阅读全文 » 250天前
2020年08月07日

技术饭 转:PHP phpspreadsheet 导出大数据 csv excel

最近项目一直需要导出数据到Excel里,使用了phpspreadsheet导出Excel,但是数据量一大的话就卡住了,正常导出大概不到1w条吧,超过1w条NGINX可能就报502超时了,为了解决问题只能百度看看了。

阅读全文 » 341天前
2020年05月08日

技术饭 阿里云 Composer 全量镜像

阿里云 Composer 全量镜像,阿里云正式上线PHP Composer全量镜像,所有PHP开发者都可以通过我们的开发者社区developer.aliyun.com/composer加速Composer安装器。这款镜像工具的最大优势是快,几乎实现与PHP Packagist官方实时同步,每隔30秒刷新全国CDN缓存。它基于阿里云的对象存储OSS和CDN研发同步系统,通过任务分发,实现同步的快速和稳定。

阅读全文 » 342天前
2020年05月07日

技术饭 php使用array_slice()函数进行数组分页

今天用到一个函数,非常好用,分享给大家,array_slice() -从数组中取出一段也就是说用这个函数可以和sql语句一样实现分页,原理是将查询出的数组,取出从指定下标开始到指定长度的数组,我们的数据未必都是存储在数据库中,很多时候是用数组来组织的。所以获取数组数据,进行分页是比较常见的编程要求,array_slice(原数组,开始下标,要取几条),这里用到三个参数(如果不写第三个参数 返回直到数组末端的所有元素)

阅读全文 » 366天前
2020年04月13日

技术饭 phpqrcode实现二维码生成

phpqrcode实现二维码生成,对于生成二维码的方式很多,可以使用js库生成、可以使用草料第三方接口生成、当然也可以使用php的插件生成,这里就主要说下php版本的二维码生成,其他方式自行搜索。

阅读全文 » 384天前
2020年03月26日

技术饭 安装在thinkPHP5.1下报错了:Cannot use Workerman\Worker as Worker because the name is already in use

在做定时任务,执行php命令:php think AutoDelOrder 的时候处理下了:Cannot use Workerman\Worker as Worker because the name is already in use,查看文件位置,看到的是 Workerman\Worker 名字已经被使用了,所以需要改成其他名称,这个算官方的一个BUG吧,希望尽快修复。

阅读全文 » 384天前
2020年03月26日

技术饭 PHP ZipArchive 类库压缩、解压Zip文件

PHP ZipArchive 类库压缩、解压Zip文件,PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法请自行百度。

阅读全文 » 390天前
2020年03月20日

技术饭 php实现文字换行以及thinphp5.1水印自定义位置

最近要做图片生成图片水印与文字水印,但是遇到了一些小问题,tp5.1的图片类库只提供了9个位置,那图片水印如何自定义位置?文字水印,字数过多,水印超出了图片如何解决?

阅读全文 » 391天前
2020年03月19日

技术饭 thinkphp5.1控制器中的初始化方法initialize()不能return出数据

本来是要做登录验证与权限验证,正常是想在每个控制器的头部初始化方法initialize()直接return出数据,但是试了很多遍thinkphp5.1控制器中的初始化方法initialize()不能return出数据,翻了文档确实也是说不能输出,建议使用中间件的方式返回数据即可。

阅读全文 » 399天前
2020年03月11日

技术饭 AikehouA 5.2.0版本,最新版安装出现 HTTP ERROR 500 错误解决方案

今天在使用最新版AikehouA 5.2.0版本时,出现 HTTP ERROR 500 错误,调试了许久,查了nginx的错误日志等,断调试代码,一直没有找到确切的原因,后来在本地php7.0环境、自己服务器php7.0环境测试,安装没有任何问题,故此判断是因为最新版本composer加载了必须支持php7.0的插件,php5.6.x的环境不支持php7.0的一些方法,所以这里就需要删除一些composer包,更新vendor目录即可解决问题。

阅读全文 » 404天前
2020年03月06日

技术饭 thinkphp5.1的json数据写入、查询

正常一篇文章属于一个分类,所以是单选,现在需要将一篇文章对应多个分类,这时候就需要将分类的单选改成了多选,那做法就有两种,1、将文章表的catid字段改成json格式,如:{"value":"5","value":"6"},2、删除文章表的catid字段,新建一个关联catid的表。

阅读全文 » 407天前
2020年03月03日

技术饭 关于js floor 和 PHP floor 价格运算结果“出错”的问题

关于js floor 和 PHP floor 价格运算结果“出错”的问题,例如:当门票价格为19.9元时,PHP程序员用floor函数来处理,结果在支付时发现金额变成了19.89元,突然少了0.01元

阅读全文 » 409天前
2020年03月01日

技术饭 PHP生成随机英文用户名

最近用wordpress来做英文的博客,需要虚构一些随机的英文用户名来冒充访客发表评论,因为对PHP不熟悉(压根没学过),只能在百度和google查找方法。办法有2个:1、随机字母数字组合法;2、字典随机组合法

阅读全文 » 414天前
2020年02月25日

技术饭 PHP仿造微信批量生成OpenId、UnionID

微信大家都很熟悉,那么微信的OpenId、UnionID的生成规则是什么呢?又如何才能批量地生成OpenId、UnionID呢?首先我观察了两个公众号关注后的生成openid的规则,发现了以下规则,1. OpenID都是28位,2. 前六位是有规律的

阅读全文 » 414天前
2020年02月25日