
PHP
文章平均质量分 52
php开发中日常遇到的问题和心得分享。
蝶开三月
来自享有“中国最美的乡村”之美誉的婺源,不辞常作婺源人
展开
-
php:代码中怎么搭建一个类似linux系统的crontab服务
最近使用自己搭建的php框架写一些东西,需要用到异步脚本任务的执行,但是是因为自己搭建的框架没有现成的机制,所以想自己搭建一个类似linux系统的crontab服务的功能。因为如果直接使用linux crontab的服务配置起来很麻烦,如果不了解的人接手,也不知道你配置了crontab,后续拆分生产和测试环境也会很复杂,不能一套代码包含所有。原创 2025-01-24 14:55:14 · 607 阅读 · 0 评论 -
php:nginx如何配置WebSocket代理?
nginx如何配置WebSocket代理?原创 2024-11-20 14:11:18 · 718 阅读 · 0 评论 -
php:使用socket函数创建WebSocket服务
闲来无事,最近捣鼓了下websocket,但是不希望安装第三方类库,所以打算用socket基础函数创建个websocket服务。原创 2024-11-20 13:58:11 · 790 阅读 · 0 评论 -
php:php-fpm平滑重启为什么无效
php-fpm平滑重启为什么无效,使用process_control_timeout配置解决原创 2023-04-23 17:21:38 · 768 阅读 · 0 评论 -
php:如何在curl方式下url请求域名使用指定ip地址来访问某个服务器
域名指向ip,如何在curl方式下url请求域名使用指定ip地址来访问某个服务器原创 2022-09-18 11:05:44 · 5363 阅读 · 0 评论 -
php:字符串压缩工具
最近在做一个数据导出的管理工具,有用到字符串压缩,所以记录下,也希望给其他人带来方便。原创 2022-09-18 10:33:31 · 2414 阅读 · 0 评论 -
php: pcntl_signal信号处理
最近公司需要把老的服务器进行置换迁移,在缩容容器的时候,突然想到项目中,很多常驻进程没有做信号处理,这样会导致容器停止的时候会直接kill进程,导致数据丢失或者逻辑中断的情况,于是使用了pcntl_signal,这里顺便记录下。...原创 2022-06-19 16:22:30 · 1636 阅读 · 0 评论 -
php: RGB 转 HSB(HSV)
前言最近因为涉及到一个算色规则,其中需要把RGB转HSB的要求,所以自己研究了下,故此记录下。什么是RGB?RGB表示红色(R)、绿色(G)、蓝色(B),又称为三原色光。它是通过对三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。什么是HSB?在HSB模式中,H(hues)表示色相、S(saturatio...原创 2022-03-12 14:03:45 · 1232 阅读 · 0 评论 -
php: redis + lua 实现发号器服务
一、背景最近看到新浪微博的发号器算法,就想着自己也研究一番其中的原理,然后各种查资料,为此自己又巩固了一次位运算、计算机原码、补码、反码等相关知识。感觉很不错,因为有那么一件事情或者目标推动你学习,我感觉是挺好的,如果漫无目的反而很难坚持下去,所以在此也推荐给大家。二、为什么要实现发号器很多地方我们都需要一个全局唯一的编号,也就是uuid。举一个常见的场景,电商系统产生订单的时候,需要有一个对应的订单编号。在composer上我们也可以看到有很多可以产生uuid的优秀组件。那么,为什么我们.转载 2021-11-12 17:04:17 · 482 阅读 · 0 评论 -
哈希冲突和哈希冲突攻击解析
一、什么是哈希冲突?当数据插入到哈希表时,不同key值产生的h(key)却是相等的,这个时候就产生了冲突。二、怎么解决哈希冲突?常用的几种方法有:开放定址法、拉链法、再哈希法、建立公共溢出区。1、开放定址法所谓的开放定址法就是一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入公式为:fi(key) = (f(key)+di) MOD m (di=1,2,3,……,m-1)详解:当冲突发生时,使用某种探测技术在散列表中形成一个.原创 2021-11-04 17:02:02 · 660 阅读 · 0 评论 -
php:雪花算法
简介SnowFlake 算法(雪花算法),是 Twitter 开源的分布式 id 生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 id。在分布式系统中的应用十分广泛,且ID 引入了时间戳,基本上保持自增的。原理1bit-不用:因为二进制中最高位是符号位,1表示负数,0表示正数。生成的id一般都是用正整数,所以最高位固定为0。41bit-时间戳:表示的是时间戳,41 bit 可以表示的数字多达 2^41 - 1,也就是可以标识 2 ...原创 2021-10-31 10:10:13 · 988 阅读 · 0 评论 -
php:foreach使用引用&的陷阱
有时候我们为了改变数组的值,在foreach的时候加个&来表示引用。如下:foreach ($array as &$item) {}这样一来,我们在循环中修改$item的值的时候,实际上修改的是$array中对应的值,而如果不加&符号的话,在循环中修改$item的值不会影响到$array。测试-加&例:$array = [ 'name' => 'Jobs', 'age' => 50,];foreach ($a原创 2021-06-24 16:33:08 · 295 阅读 · 2 评论 -
error: 使用strtotime的注意点有哪些?
最近在开发一个关于游戏榜单的项目,需要区分日榜、周榜、月榜,其中需要用到strtotime函数来计算时间,就会想到strtotime的一些注意点,顺便记录下。例如:echo date( "Y-m-d", strtotime( "-1 month", strtotime('2021-03-30')));//输出 2021-03-02我们知道 2 月根本没有 30 号, 所以上面的 -1 month 还是跳到了3月2号。所以使用处理strtotime时间一般都需要注意这些问题。php5..原创 2021-03-13 12:13:54 · 175 阅读 · 0 评论 -
php:RPC是什么?
1、什么是RPC?RPC全称Remote Procedure Call,即远程过程调用,就是要像调用本地的函数一样去调远程函数,屏蔽远程调用的复杂性。2、为什么需要RPC?微服务、分布式应用的开发越来越常见,RPC可以解决各个节点之间的服务调用以及通信问题。 治理功能,比如连接管理、健康检测、负载均衡、优雅启停机、异常重试、业务分组以及熔断限流等等。3、demo实例(php)上面简单介绍了下rpc,下面咱们直接上代码(以json格式传递,使用http作为传输协议,也可以使用别的..原创 2020-12-25 11:30:40 · 507 阅读 · 0 评论 -
php:trait的特性及其作用
1、背景php从以前到现在一直都是单继承的语言,无法同时从两个基类中继承属性和方法,为了解决这个问题,php出了Trait这个特性。2、用法<?php//使用trait声明Test类trait Test{ public function getName() { echo "hello world"; } public function getAge() { echo 18; }}//使用use关键字进.原创 2020-12-24 21:28:21 · 212 阅读 · 0 评论 -
php:抓取各大平台音乐链接 ( QQ音乐、酷我、咪咕、网易云 )
最近闲来无事,就想写点东西,刚看到分享到微信朋友圈的音乐,就想自己也写个试试做一个同样的效果。我们都知道音乐平台在点击分享的时候,都有一个复制链接的按钮,我们根据分享的链接,获取歌曲信息(歌曲链接、封面、歌手等等),以下收费歌曲都不行哈;注:纯属练练手,大家切勿用到商业用途。目录一、网易云音乐二、酷我音乐三、咪咕音乐四、qq音乐五、辅助方法六、小结一...原创 2019-12-02 17:02:50 · 8555 阅读 · 4 评论 -
php:微信app支付和ios内购相关demo
前几天,小编公司需要做一款社交类app,其中涉及到微信app支付和ios内购(支付宝后续可能会加),所以我又捡起了好几年没写过支付的代码,重新温习了下,并上传了资源,希望能帮到大家。资源地址:https://download.youkuaiyun.com/download/panjiapengfly/12010490...原创 2019-12-02 16:48:01 · 407 阅读 · 0 评论 -
error:使用fsockopen实现异步,发现请求会丢失,nginx 499 怎么办?
在上一篇,小编说到php异步请求,其中fsockopen会有一个缺点,那就是会出现请求丢失的情况,查看 nginx access log,发现这样的请求会以499(Client Closed Request)记录。为什么?nginx对499的定义是”client has closed connection”,并且在这些情况下会返回这个状态码:upstream 在收到读写事件处理...原创 2019-11-11 15:22:17 · 804 阅读 · 0 评论 -
php:三种填充模式的区别(PKCS7Padding/PKCS5Padding/ZeroPadding)
长话短说,写这篇文章主要是为了补下这篇文章的相关知识点 aes加密使用mcrypt_decrypt能解开,openssl_decrypt却解不开。常见的三种填充方式:我们知道某些加密算法要求明文需要按一定长度对齐,叫做块大小(BlockSize),比如16字节,那么对于一段任意的数据,加密前需要对最后一个块填充到16 字节,解密后需要删除掉填充的数据。ZeroPadding,数据...原创 2019-10-26 16:00:11 · 5500 阅读 · 0 评论 -
php:aes加密使用mcrypt_decrypt能解开,openssl_decrypt却解不开,what?
小编前几天在做一个数据加密的时候,发现php中的openssl_decrypt竟然解不开密文, 此景之下只好寻找答案,并总结下结果。场景:使用python加密的一个数据,方法如下:#AES加密def aes_encrypt(text, key, mode, iv): import base64 cryptor = AES.new(key, mode, iv) length ...原创 2019-10-26 15:38:56 · 6384 阅读 · 0 评论 -
error: php中redis使用lrem进行删除队列元素,删除失败?
我们都知道在php中,想要删除redis中list类型的元素,需要使用lrem命令进行删除。参考redis中lrem命令的参数是:LREM key count value根据参数 count 的值,移除列表中与参数 value 相等的元素。count 的值可以是以下几种:count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count...原创 2019-10-26 10:59:44 · 1984 阅读 · 0 评论 -
php:语言结构和函数的区别
前言这次我们要讲的是语言结构和函数的区别,我相信对于大多数php初学者来说很难注意到这些区别。因为要实现一个功能,我们可以找到很多种方法来实现它,但是怎么选择,怎么找出最高效的方法才是关键,同样的功能,但是不同样的代码,执行效率却不一样,除了在尽可能减少时间和空间复杂度少的算法上,我们还可以避免选择一些函数,尽量选择语言结构来处理,进而提高代码的质量。知识点很简单,但是很实用。...原创 2019-10-25 17:21:24 · 389 阅读 · 0 评论 -
php和java之间aes加密的互通
php和java之间aes加密互通,亲测成功原创 2017-07-18 18:58:36 · 6504 阅读 · 4 评论 -
php设置session入库
<?php ini_set("session.save_handler","user"); //session.gc_probability = 1 分子 ini_set("session.gc_probability",1); //session.gc_divisor = 1000 分母 ini_set("session.gc_divisor",2);原创 2017-05-16 15:07:44 · 448 阅读 · 0 评论 -
CGI和FastCGI的区别
CGI和FastCGI的区别 CGI首先我们要了解什么是CGI:通用网关接口,它是Web服务器与外部应用程序(CGI程序)之间传递信息的接口标准,当你动态请求web服务器资源的时候,就需要cgi来处理动态语言和web服务器之间的交流,因为web服务器是没办法直接处理动态请求的。CGI处理Web Server 与后端的动态语言交流时,后端都要启动创建一个进程,接收Web Se原创 2017-03-15 19:18:27 · 1157 阅读 · 0 评论 -
负载均衡的四层和七层区别
简单理解四层和七层负载均衡四层:客户端与web服务器只建立一次TCP连接。四层的负载均衡设备, 只是基于ip和端口,然后结合分配方式进行分配。只是对报文中目 标IP地址进行修改(改为后端服务器IP),然后直接转发给该服务 器,返回的结果直接返回给客户端,不经过负载均衡设备,四层的 负载均衡设备,只是起到一个类似路由器的转发动作。七层:客户端与负载均衡设备(代...原创 2017-03-15 19:15:33 · 1769 阅读 · 0 评论 -
Session和cookie
Session和cookie原理 一、Session原理当我们开启session_start的时候,就会产生一个session_id,然后浏览器将这个session_id,保存在cookie中,以后浏览器每次请求都会额外加上这个参数值,再服务器根据这个session_id,就能取得客户端的数据状态。 浏览器关闭后,这个cookie就清掉了, 如果客户端浏览器意外关闭,原创 2017-03-31 20:56:18 · 332 阅读 · 0 评论 -
PHP链表
链表:链表是节点的集合.每一个节点通过链表相互连接,节点可以存储任何数据结构和内容。 是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题(链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元(避免内存的浪费)链表无非是几种固定形式:单向的,双向的,循环的,带或不带头节点的,带或不带尾节点的,熟悉一种结构,其它...原创 2017-03-03 09:23:09 · 1279 阅读 · 0 评论 -
php和java之间rsa加密互通
以下是php封装好的类,引入即可使用<?php/** * 作者:pjp * 邮箱:vippjp@163.com */class RSA{ private $privateKey='';//私钥(用于用户加密) private $publicKey='';//公钥(用于服务端数据解密) public function __construct(){ $this->...原创 2017-07-18 19:10:38 · 10564 阅读 · 5 评论 -
php图片合成和图片处理(imagick)
在我们印象中php一些简单的图片处理可以用gd库来完成,但是真正快速高效的、灵活复杂的图片处理,gd库是不满足的,所以我们一般使用linux上的 ImageMagick 或者 php的imagick扩展。 我们来看看两者的区别:(1) imagick是一个PHP的扩展,用ImageMagick提供的API来进行图片的创建与修改,不过这些操作已经包装到扩展imagick中去了,...原创 2018-05-25 15:53:11 · 3670 阅读 · 4 评论 -
编写一个私有的composer包
很多时候,多人开发一个项目的时候,我们需要统一管理依赖和一些类库文件,不然每个人引入自己的类源码,造成累赘,和使用方法不一混乱的局面。所以现在很多流行框架都用composer来管理。大部分都是github上创建自己的依赖包,然后Packagist来发布,最后composer下载到自己的项目。但是有时候我们需要用的类库是涉及隐私的,不方便公开,怎么办。这个时候需要我们自己配配置composer...原创 2018-07-25 15:47:30 · 3481 阅读 · 0 评论 -
php如何使用protobuf3
简介Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存...原创 2018-09-06 11:34:20 · 3870 阅读 · 0 评论 -
php使用smtp发送邮件(ssl链接方式)
在这里我要介绍的是如何使用smtp进行发送邮件,分别介绍了普通链接和ssl链接两种方式。一、准备材料 smtp类下载地址:https://download.youkuaiyun.com/download/panjiapengfly/10688054二、代码实现 简单粗暴,上代码:<?phpheader("Content-Type: text/html; c...原创 2018-09-26 12:04:17 · 7729 阅读 · 3 评论 -
简易的ORM类
<?php/** * author: pjp */class MyOrm{ public $host = '127.0.0.1'; //数据库地址 public $dbname = 'test'; //数据库名 public $user = 'root'; //数据库用户名 public $pwd = 'root'; //数据库密...翻译 2019-04-01 17:30:45 · 285 阅读 · 0 评论 -
常用函数-生成各种类型随机数
<?php /** * +---------------------------------------------------------- * 生成UUID 单机使用 * +---------------------------------------------------------- * * @return strin...翻译 2019-04-01 17:38:22 · 595 阅读 · 0 评论 -
php 把汉字转换为拼音
<?phpfunction textToPinYin($_String, $_Code='gb2312'){ $_DataKey = "a|ai|an|ang|ao|ba|bai|ban|bang|bao|bei|ben|beng|bi|bian|biao|bie|bin|bing|bo|bu|ca|cai|can|cang|cao|ce|ceng|cha". "|chai|chan...转载 2019-08-26 16:35:47 · 617 阅读 · 0 评论 -
php 命名空间的简单使用和介绍
php 命名空间 一、为什么php中要使用namespace?命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。假设如果不使用namespace,那么每个类在一个项目中的名字就必须是固定的。因为php在new的时候不管是调用autoload还是调用已加载过的类,都存在一个类名对应的文件。所以在没有namespace的时候,我原创 2017-02-11 09:06:03 · 314 阅读 · 0 评论