技术饭 PHP中的proc_open函数
proc_open函数是PHP中一个非常强大的函数, 执行一个命令,并且打开用来输入/输出的文件指针,它允许您在PHP脚本中执行外部命令。这可以用于各种目的,如:调用系统命令和工具、与其他应用程序进行交互、处理文件和数据、执行复杂的自动化任务,proc_open() 提供了更加强大的控制程序执行的能力
阅读全文 » 240天前2024年04月09日
技术饭 PHP:PCNTL进程控制功能的基础使用
PHP:PCNTL进程控制功能的基础使用,多进程的作用主要用于日志分析、队列处理、批量处理等,如要处理10w级别的数据,一条数据需要执行1秒,那么一个进程不间断需要执行1天多的时间,但是如果分成20个进程(进程过多会导出cpu爆满),每个进程分5000条只需执行1.3小时左右就完成任务了。
阅读全文 » 265天前2024年03月14日
技术饭 curl 发送 form-data 数据流:Content-Type:multipart/form-data; boundary=xxxxxxxxx; charset=utf-8
curl 发送 form-data 数据流:Content-Type:multipart/form-data; boundary=xxxxxxxxx; charset=utf-8,multipart/form-data是基于post方法来传递数据的,并且其请求内容格式为Content-Type: multipart/form-data,用来指定请求内容的数据编码格式。另外,该格式会生成一个boundary字符串来分割请求头与请求体的,具体的是以一个boundary=${boundary}来进行分割。
阅读全文 » 546天前2023年06月07日
技术饭 PHP的MongoDB\Driver\Manager实现对mongodb的操作
MongoDB是开发人员数据平台,提供必要的服务和工具,以快速、高性能和大规模地构建用户需求的分布式应用程序。MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
阅读全文 » 552天前2023年06月01日
技术饭 PHP 导入导出csv文件函数:fgetcsv()、fputcsv()
PHP 导入导出csv文件函数:fgetcsv()、fputcsv(),数据导出格式正常是execl的.xsl、.xslx格式,但导出这两种格式的文件体积很大,还很占用内存,所以一般推荐导出csv格式,csv能处理的数据量比较大,文件还小,是导出数据文件格式的首选。excel导出csv,通过txt打开保存为utf-8。
阅读全文 » 554天前2023年05月30日
生活札记 Laravel学习笔记 - 基础入门(一)
Laravel 是一个全栈Web应用程序框架,具有富有表现力、优雅的语法。它可以从面条一样杂乱的代码中解脱出来,它可以构建网络APP,而且每行代码都可以简洁、富于表达力。在Laravel中已经具有了一套高级的PHP ActiveRecord实现 -- Eloquent ORM。它能方便的将“约束(constraints)”应用到关系的双方,就具有了对数据的完全控制,而且享受到ActiveRecord的所有便利。Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。
阅读全文 » 579天前2023年05月05日
技术饭 redis队列详解
现如今的互联网应用大都是采用分布式系统架构设计的,所以消息队列已经逐渐成为企业应用系统内部通信的核心手段,它具有低耦合、可靠投递、广播、流量控制、最终一致性 等一系列功能。当前使用较多的消息队列有 RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ 等,而部分数据库 如 Redis、MySQL 以及 phxsql ,如果硬搞的话,其实也可实现消息队列的功能。可能有人觉得,各种开源的 MQ 已经足够使用了,为什么需要用 Redis 实现 MQ 呢?有些简单的业务场景,可能不需要重量级的 MQ 组件(相比 Redis 来说,Kafka 和 RabbitMQ 都算是重量级的消息队列)。
阅读全文 » 583天前2023年05月01日
生活札记 Fiddler抓包、JMeter性能测试、Postman接口调试工具之自动化测试(一)
抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试。Postman是一个接口测试工具,在做接口测试的时候,Postman相当于一个客户端,它可以模拟用户发起的各类HTTP请求,将请求数据发送至服务端,获取对应的响应结果。
阅读全文 » 626天前2023年03月19日
生活札记 Python学习笔记 - 进阶(二)
Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
阅读全文 » 812天前2022年09月15日
生活札记 Python学习笔记 - 入门(一)
Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
阅读全文 » 844天前2022年08月13日
技术饭 INSERT INTO SELECT FROM,从某个表复制到另外一个表语句的使用方法
INSERT INTO SELECT FROM,从某个表复制到另外一个表语句的使用方法,数据脚本迁移原本看起来比较麻烦,问了下大佬,大佬随便在我屏幕上打上:insert into from,说用这个就好了,然后再加上小度就找到解决方法了,感谢大佬,每天教会小弟一点知识。
阅读全文 » 926天前2022年05月24日
技术饭 mysql替换字段值为另外一个表的字段值
mysql替换字段值为另外一个表的字段值,需求是:替换充值订单中的时间为另外一张表的时间字段,这时候正常使用 INNER JOIN 查询的方式查出来数据之后再进行update更新。
阅读全文 » 972天前2022年04月07日
技术饭 PHP中ElasticSearch的简单使用
Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。
阅读全文 » 1007天前2022年03月03日
技术饭 mysql替换(replace)字符串字段的某些字符串、正则替换
mysql替换(replace)字符串字段的某些字符串、正则替换,由于图片字段上传到腾讯云cos之后,缩略图带了裁剪参数,存入数据库之后,参数也被存在了数据库中,导致图片的显示不全,现在需要把图片处理参数删除,也就是图片url问号后面的参数一并删除;刚开始想法是直接用mysql里面的regexp_replace函数对敏感字段进行处理。后来发现mysql8.0才支持regexp_replace()。mysql5.7里只有正则匹配的函数。最后还是用mysql本身提供的函数进行处理。
阅读全文 » 1007天前2022年03月03日
技术饭 PHP简单对称ID加密、解密算法
PHP简单对称ID加密、解密算法,有时候需要对数据进行简单的混淆,不让别人轻易破解,所以就需要对数据进行一定的加密解密来保证数据的安全性,这里做个简单的算法。
阅读全文 » 1062天前2022年01月07日
技术饭 mysql根据关联表查询统计字段进行排序
mysql根据关联表查询统计字段进行排序,需求是查询所有的主账号数据,然后根据子账号的数量进行按高到低排序,第一想法就是需要做order by那么就需要把统计子账号的结果作为一个字段,那这时候就可以使用子查询来实现了。
阅读全文 » 1132天前2021年10月29日
技术饭 腾讯云负载均衡的使用配置
腾讯云负载均衡的使用配置,大数据大流量时代,服务器的压力越来越大,这时候负载均衡就成了流量分发的解决方案了,负载均衡(Cloud Load Balancer)是对多台 云服务器 进行流量分发的服务。负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。
阅读全文 » 1214天前2021年08月08日
技术饭 nginx设置目录转发
nginx设置目录转发,很多时候项目只有一个域名,但是项目又有很多的入口,比如后台、数据运营后台、前台等,这种处理方式要么是几个二级域名,要么就是同一个域名做不同目录下的分发,当然同一个域名相对简洁,没那么的复杂,只要做一个nginx目录转发即可。
阅读全文 » 1214天前2021年08月08日
技术饭 centos8 安装 mysql5.7(更新数据库)
centos8 安装 mysql5.7(更新数据库),centos8下默认的yum源是mysql8,如果想用mysql5.7那该如何安装呢?其实也蛮简单的,mysql官方也给出了操作方法,直接安装步骤执行就可以了,但是有一点需要注意的是:过程中可能会报Mariadb错误,原因是因为yum自动默认了Mariadb,这需要先禁用卸载Mariadb之后才能继续安装mysql5.7版本。
阅读全文 » 1215天前2021年08月08日
技术饭 chart.js设置饼状图和甜甜圈图
chart.js设置饼状图和甜甜圈图,饼图和环形图表可能是最常用的图表。它们被分成不同的部分,每个部分的圆弧表示每个数据的比例值。该图表在展示数据之间的关系比例方面非常出色。饼图和环形图在 Chart.js 中实际上是同一个类,但有一个不同的默认值 - cutoutPercentage。意味着内部的百分比被减少。饼图默认为 0,甜甜圈默认为 50。该图表在Chart核心中注册了两个别名。除了不同的默认值和不同的别名,其他是完全一样的。
阅读全文 » 1281天前2021年06月02日
技术饭 JAVA原生的类实现SHA256加密签名,转换成PHP版本加密
JAVA原生的类实现SHA256加密签名,转换成PHP版本加密签名,注意点主要在sort字典排序的时候需要设置方式为 SORT_STRING,如果sha 256加密函数的第三个参数设置为true时,这时候返回的是二进制数据,默认是false返回的则是进制的字符串。
阅读全文 » 1290天前2021年05月24日
技术饭 小程序登录、用户信息相关接口调整说明:getUserInfo:fail scope unauthorized “err_code":"-12007
小程序登录、用户信息相关接口调整说明:getUserInfo:fail scope unauthorized “err_code":"-12007,2021年2月23日起,若小程序已在微信开放平台进行绑定,则通过wx.login接口获取的登录凭证可直接换取unionID,2021年4月13日后发布的小程序新版本,无法通过wx.getUserInfo与<button open-type="getUserInfo"/>获取用户个人信息(头像、昵称、性别与地区),将直接获取匿名数据(包括userInfo与encryptedData中的用户个人信息),获取加密后的openID与unionID数据的能力不做调整。此前发布的小程序版本不受影响,但如果要进行版本更新则需要进行适配。新增getUserProfile接口(基础库2.10.4版本开始支持),可获取用户头像、昵称、性别及地区信息,开发者每次通过该接口获取用户个人信息均需用户确认。具体接口文档:《getUserProfile接口文档》由于getUserProfile接口从2.10.4版本基础库开始支持(覆盖微信7.0.9以上版本),考虑到开发者在低版本中有获取用户头像昵称的诉求,对于未支持getUserProfile的情况下,开发者可继续使用getUserInfo能力。开发者可参考getUserProfile接口文档中的示例代码进行适配。
阅读全文 » 1338天前2021年04月06日
技术饭 websocket 心跳包保持连接和关闭重连
websocket 心跳包保持连接和关闭重连,在开启了swoole服务之后,浏览器链接websocket链接之后,发送数据正常,但是过一段时间如果浏览器没有重新请求服务器会自动的断开会话,这样就不能发送数据了,为了保持链接需要做一个链接服务器的心跳请求。
阅读全文 » 1342天前2021年04月02日
技术饭 thinkphp5将json对象转数组
thinkphp5将json对象转数组,tp5获取得到的数据是json格式,但是无法通过数据的方式直接获取,以前是有默认转换,现在只能通过 getContent() 方法来获取内部的数据了。
阅读全文 » 1342天前2021年04月02日
技术饭 微信公众号开发一物一码功能与扫码跳转小程序
需求是要用到微信公众号的一物一码功能,申请一批二维码并进行激活,将这些二维码分发到商品上,用户通过扫描二维码可以跳转到小程序,然后进入到我们自己的业务逻辑存储数据进行后续分析。看了官方的开发文档了,发现一物一码功能也是上线不久,网上并没有太多的开发经验。所以折腾了几个小时,终于大概弄清楚了,也不会特别复杂,说白了就是:公众号的一个插件,用来批量生成商品二维码,扫码之后跳转到小程序的页面。不过开通一码一物的流程可能比较慢。
阅读全文 » 1414天前2021年01月20日
技术饭 更改MySQL数据库的编码为utf8mb4,还是无法解决表情符号不能保存的问题
更改MySQL数据库的编码为utf8mb4,还是无法解决表情符号不能保存的问题,这几天在做公众号授权,每次写入用户昵称数据的时候一直报错,我就奇怪了,明明数据库、字符集都改成了utf8mb4,为什么还是写入不了数据呢,查看了测试机(mysql5.7.24)的my.cnf 文件没有配置设置编码却没有问题,而正式机(mysql5.7.32)做了字符集编码的配置却出现了异常,真实奇葩~~~
阅读全文 » 1439天前2020年12月26日
技术饭 mysql中json_contains、json_extract等json查询方法的使用
mysql中json_contains、json_extract等json查询方法的使用,新版 Mysql 中加入了对 JSON Document 的支持,可以创建 JSON 类型的字段,并有一套函数支持对JSON的查询、修改等操作。JSON是一种轻量级的数据交换格式,采用了独立于语言的文本格式,类似XML,但是比XML简单,易读并且易编写。对机器来说易于解析和生成,并且会减少网络带宽的传输。JSON的格式非常简单:名称/键值。之前MySQL版本里面要实现这样的存储,要么用VARCHAR要么用TEXT大文本。 MySQL5.7发布后,专门设计了JSON数据类型以及关于这种类型的检索以及其他函数解析。
阅读全文 » 1448天前2020年12月17日
技术饭 mysql查询语句group by 后面 order by 失效
原始需求是要查询出通过手机号最新报名的数据并且需要对手机号进行分组,但是在查询过程中发现mysql查询语句group by 后面 order by 失效,无论怎么查询都是未查到需要的数据,单独查询数据排序没有问题,但是加入 GROUP BY 之后就不行了,后来的解决方案是:使用子查询的方式先查出排序好的数据,然后再将数据进行分组排序。
阅读全文 » 1448天前2020年12月17日
技术饭 PHP二维数组去除重复项
PHP的一维数组正常使用array_unique()方法直接去除重复项即可,但是二维数据似乎没有固定的内置函数,这时候就需要自己手动些方法处理了,那如果去除二维数组的重复项呢?研究了一会,大概写了简略版本的去重方案。
阅读全文 » 1477天前2020年11月18日
技术饭 centos8重新安装MySQL,从高版本降到低版本后疯狂报错
centos8重新安装MySQL,从高版本降到低版本后疯狂报错。原来服务器centos8是默认yum install mysql的,mysql的版本是8.0.21,但是原始项目的数据库过度过去之后,数据库报错了,说是8.0.17版本之后int、tinyint类的字段长度被废弃不再显示了:mysql8.0 tinyint字段长度修改时无效,所以就想把mysql版本降到5.7.32版本,本来是先yum remove mysql,因为没有删除遗留的mysql文件、目录导致了安装5.7.32版本一直报错。
阅读全文 » 1484天前2020年11月11日
技术饭 MySQL 批量修改数据表编码及字符集
经常使用SQLyog导出导入数据库时,不懂为什么经常性出现编码错误字符集被设置成了默认,奇怪的很,可能是软件版本问题,当需要修改数据库编码和字符集时,通常需要对其下属的所有表及表中所有字段进行修改。以下备注批量修改方案( 以修改为 utf8mb4_general_ci为例,注意将 db_name 换为真实的数据库名 )。
阅读全文 » 1485天前2020年11月10日
技术饭 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中的参数就失效了,无论设置成什么都会失效。
阅读全文 » 1542天前2020年09月14日
技术饭 网站防刷,防止羊毛党:顶象、数美数据接口配置
最近做了很多的微信活动,特别是答题发红包活动,除了并发量需要处理之外,还有一个很重要的点就是网站防刷、防止羊毛党刷接口,因为微信上羊毛党养了很多的机器微信号,活动如果在只有微信授权的情况下,无法做到完全的限制,即使通过ip来限制也没办法完全限制,因为羊毛党还可以通过模拟定位、模拟ip来访问,只要是正常的微信号还是可以突破防线的,那这时候第三方防刷也是有点必要的。
阅读全文 » 1548天前2020年09月08日
技术饭 获取微信js-sdk网页授权的地理位置
获取微信js-sdk网页授权的地理位置,通过微信浏览器打开页面时,有时会提示要获取地理位置信息,点击同意后,自己的地理位置信息就会相应的显示在页面,同时通过数据库的查询,以实现以地理位置分类的逻辑业务。
阅读全文 » 1570天前2020年08月17日
技术饭 php解析ip地址的免费纯真IP数据库
之前使用的tp3的UTFWry.dat作为ip解析,但是感觉这个类有点旧,还比较难用,数据不多,如果需要其他信息还需要重新修改IpLocation.php类,淘宝腾讯提供的免费第三方获取ip的方式不太稳定,所以找了找还是基于qqwry.dat的ip库相对合适。
阅读全文 » 1571天前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,后来是清除了缓存才解决了问题,可是问题是总不能一直清除缓存吧!!!
阅读全文 » 1572天前2020年08月15日
技术饭 表单提交之后数组类型的数据第二次提交被覆盖,使用 Math.random() 解决
表单提交之后数组类型的数据第二次提交被覆盖,使用 Math.random() 解决,最近做表单提交,需要直接提交数组就是用表单的数组形式,servicetype[type][] 复数形式,但是表单在提交之后报错,返回里层的被加了key值,这个时候有的就被覆盖无法显示提交了。这时候需要,重新生成key值保证数组key的唯一性。
阅读全文 » 1666天前2020年05月13日
技术饭 转:PHP phpspreadsheet 导出大数据 csv excel
最近项目一直需要导出数据到Excel里,使用了phpspreadsheet导出Excel,但是数据量一大的话就卡住了,正常导出大概不到1w条吧,超过1w条NGINX可能就报502超时了,为了解决问题只能百度看看了。
阅读全文 » 1671天前2020年05月08日
吃瓜群众 百度网盘“破解版”,Pandownload 开发者被抓
今天下午,据扬州网警巡查执法 官方微博通报(原微博已删除),宝应网安破获一起黑客攻击计算机系统案件。今年2月,受害人刘某报案称其下载的“Pandownload”会在未授权的情况下,将百度网盘数据共享出去,致隐私照片和文件泄露。江苏省扬州宝应县局网安民警立即开展案情分析研判。
阅读全文 » 1693天前2020年04月16日