![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PHP
鱼满仓
1.https://github.com/luolaifa000 /br
2.不要把递归想复杂,想简单点。
展开
-
PHP7 错误异常处理
/* * 1 interface Throwable2 |- Exception implements Throwable3 |- ...4 |- Error implements Throwable5 |- TypeError extends Error6 |- ParseError extends Error7 |- ArithmeticError extends Error8 |-.原创 2020-10-29 11:56:54 · 343 阅读 · 0 评论 -
Laravel Log 流程
Laravel 记录日志也是用了monolog/log ,只是在上面加了一层可配置和包裹了一层测试代码Log::channel('zip')->info(' begin');对应日志配置'zip' => [ 'driver' => 'daily', 'path' => storage_path('logs/zip/zip.log'), ...原创 2020-04-02 13:19:59 · 2732 阅读 · 0 评论 -
PHP Guzzle包 用法
总结: 1.GUZZLE包最终还是用的curl的curl_exec和curl_multi_exec去请求,可以添加自定义配置,这些配置最终还是会对应到 curl_setopt_array($easy->handle, $conf); 设置 2.还有一个就是可以做一些请求前或者请求返回后的中间件。接入请求的过程中处理$stack = new HandlerStack(); push,ha...原创 2020-03-26 19:27:28 · 1549 阅读 · 0 评论 -
PHP &and| 位运算
$a = 0x01000000; //1000000000000000000000000 16777216$b = 0x00010000; //0000000010000000000000000 65536$c = $a | $b; //1000000010000000000000000 16842752$d = $a & $b; //00000000...原创 2019-03-25 14:30:50 · 370 阅读 · 0 评论 -
NGINX PHP-FPM 共享WINDOWS文件夹 开发环境
主要安装过程中出现的问题:1.执行PHP文件出现空白nginx 默认配置文件中fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;改成fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;将要执行的文件的绝对路径地址传给PHP-FPM 执行 PH...原创 2019-01-26 15:02:22 · 868 阅读 · 0 评论 -
esearch多级查询
类似于 SQL = is_on_sale AND ( (price >20 AND cat_id iN(1,2)) OR (price >30 AND cat_id iN(3,4)) )ES里面用这个类似查询相同效果{ "filters": [ { "type":"pairs", "operators":[...原创 2019-01-20 17:32:24 · 782 阅读 · 1 评论 -
Sphinx 实现复杂查询
曾经有一天 一个运营提个需求,需要在一个列表页面中按照条件选出商品条件是用SQL的形式就是is_on_sale AND ( (price >20 AND cat_id iN(1,2)) OR (price >30 AND cat_id iN(3,4)) )SPHINX 实现就是 $cl->SetSelect("@id, IF((shop_price >...原创 2019-01-24 15:37:44 · 820 阅读 · 0 评论 -
redis->predis-lua脚本
192.168.127.128:6379>eval "return redis.call('set',KEYS[1],ARGV[1])" 1 name luolaifa OK 192.168.127.128:6379>get name "luolaifa" #哨兵模式下一主多从,执行setnx命令,predis ...原创 2019-01-04 11:35:05 · 765 阅读 · 0 评论 -
PHP-对象的赋值和引用
前言:因为之前在工作中用到SPHINX,在实例化对象的时候,其他地方会用几次这个对象。在函数传递过程中,上一个查询对象的上下文环境会传递到当前的上下文环境,所以我们采取clone来创建新的对象,互不影响。$cl = new SphinxClient();$cl2 = $cl;dump($cl);dump($cl2);//输出结果,等号复制对象的时候是相当于引用,共享一个内存地址...原创 2018-12-15 11:51:31 · 718 阅读 · 0 评论 -
CGI,fastCGI,php-fpm
理解CGICGI是公共网关接口,是网站服务器进程经过操作系统和互联网客户端进行通讯的一套规范标准。通俗的讲CGI就象是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执行程序,如果用户请求的是静态资源,则CGI直接将静态资源返回,如果用户请求的是php程序,则CGI将php程序运行的结果返回给用户。CGI 的跨平台性能极佳,几乎可以在任何操作系统上...原创 2018-12-06 22:38:41 · 152 阅读 · 0 评论 -
一天当中评论数量最多的10个用户SQL
select count(*) as num,u.email from eload_order_info as o LEFT JOIN eload_users as u on u.user_id = o.user_id GROUP BY o.user_id ORDER BY num desc LIMIT 0,10select * from (select count(*) as n...原创 2018-12-19 17:52:35 · 2124 阅读 · 0 评论 -
PHP-浮点数的精度
PHP-浮点数的精度浮点数的精度有限。尽管取决于系统,PHP 通常使用 IEEE 754 双精度格式,则由于取整而导致的最大相对误差为 1.11e-16。非基本数学运算可能会给出更大误差,并且要考虑到进行复合运算时的误差传递。此外,以十进制能够精确表示的有理数如 0.1 或 0.7,无论有多少尾数都不能被内部所使用的二进制精确表示,因此不能在不丢失一点点精度的情况下转换为二进制的格式。这就...原创 2018-12-19 15:19:34 · 700 阅读 · 0 评论 -
分治归并排序-PHP
github 地址 : https://github.com/luolaifa000/phpStudyCode/blob/master/DivideConquerSort.php基本思想是 先将数组分成一个个不能在分的集合,然后在按顺序合并各个集合<?phpfunction pre($arr){ $data = func_get_args(); forea...原创 2018-12-04 09:31:15 · 377 阅读 · 0 评论 -
二分查找-PHP
github 地址 : https://github.com/luolaifa000/phpStudyCode/blob/master/MiddleSearch.php基本思想是,在有序的数组里面递归折半查找<?phpfunction pre($arr){ $data = func_get_args(); foreach($data as $key=>$...原创 2018-12-03 23:27:19 · 275 阅读 · 0 评论 -
APP接口抓包调试方法
首先APP端请求 是代理到你PC的网络网卡上面,相当于你APP的请求是转发到PC,PC再去请求对应的接口或者地址。 要求:1. APP和PC必须在同一个网络下面,然后APP连接WIFI要设置代理IP到PC的机器上,端口8899、2.然后PC要装一个nodejs的工具, http://wproxy.org/whistle过程1.npm install -g whist...原创 2019-02-15 16:59:10 · 1686 阅读 · 0 评论 -
PHP 设置COOKIE和读取COOKIE的问题
setcookie('user-token-test', 'asdfasdfasdf', time() + 1111, '/', $cookieDiamon);filedump($_COOKIE['user-token-test']); 、、 NULLexit(1);在一次功能上,有遇到一个的BUG一个场景下面,在执行的一个PHP脚本周期下面,有同事直接执行setcookie一个...原创 2019-02-22 13:41:09 · 2530 阅读 · 0 评论 -
【PHP】 phpredis 长连接实现原理
前言; 多年以前有个大佬问过一个问题,PHP的phpredis第三方扩展(客户端)怎么实现与redis服务端维持长连接,并且每个请求是怎么复用这些连接的,今天才突然想一探究竟,便翻了翻一下源码。PHP源码版本是php-7.2.19, phpredis扩展版本是redis-5.0.2。 首先在传统的网络通信中,普通的交互流程中,客户端发起连接请求,三次握手...原创 2019-10-05 23:07:21 · 2937 阅读 · 0 评论 -
nginx php 字节对齐
ngxin这种内存对其是为了减少向内存或者CPU缓存读取数据的时候,减少读取的次数。 类似于读取硬盘数据时,都是一页一页单位读取的。 能够保证一次性能够读取到完整的数据.#define ngx_align(d, a) (((d) + (a - 1)) & ~(a - 1))ngx_align(23,16) 就是取16的最小整数倍 且这个值要大于23 = 3237&...原创 2019-05-31 19:15:35 · 197 阅读 · 0 评论 -
PHP xhprof 扩展原理
简介:由于公司项目,最近需要分析后端PHP接口的性能数据,就采用了FACEBOOK之前开源的一个扩展,现在市面上很多分支都是基于FB最开始的线开发的,但是由于FB已经停止维护,所以现在其他线都是自己个人在维护。今天我分析的这个分支是兼容PHP7+的版本收集性能数据,先贴出GITHUB的链接https://github.com/longxinH/xhprof扩展的安装方式和PHP调用的A...原创 2019-09-03 19:56:38 · 664 阅读 · 0 评论 -
使用 gdb 调试 PHP 扩展
https://blog.csdn.net/carzyer/article/details/53339565php的扩展使用c/c++开发,可以很容易的使用gdb进行调试。具体步骤如下:首先编译php的时候需要加上** --enable-debug**参数 ./configure --enable-debug make && make install...转载 2019-09-03 15:11:24 · 365 阅读 · 0 评论 -
调试PHP的Core
如何调试PHP的Core之获取基本信息Published on23 June 2011本文地址:http://www.laruence.com/2011/06/23/2057.html 转载请注明出处其实一直想写这个系列, 但是一想到这个话题的宽泛性, 我就有点感觉无法组织.今天我也不打算全部讲如何调试一个PHP的Core文件, 也不会介绍什么是Coredump, 选择一...转载 2019-08-14 10:44:33 · 248 阅读 · 0 评论 -
Laravel 队列执行流程
执行队列php artisan queue:work执行队列过程,从queues:detault:delayed有序集合拿出到期的JOB数据放到queues:detault队列中,然后从首先从queues:detault 队列拿出要执行的JOB数据放入到queues:detault:reserved有序集合中,然后laravel 这边的延迟队列使用了三个队列。queue:de...原创 2019-07-26 16:30:31 · 2471 阅读 · 0 评论 -
Laravel 框架和路由中间件
路由中间件处理代码框架中间件处理代码原创 2019-07-31 14:34:34 · 407 阅读 · 0 评论 -
PHP __sleep和__wakeup
class B{ public $c; public function __construct() { $this->c = 111; } public function __sleep() { return []; // return ['c']; }}cl...原创 2019-07-10 15:31:23 · 250 阅读 · 0 评论 -
CURL远程大文件,重定向给浏览器下载
需求背景:最近在做一个项目,用户下载文件后端用的是LARAVEL框架,先贴出代码:return (new StreamedResponse(function() use ($id, $model) {// $handle = fopen('php://output', 'w'); $ch = curl_init();// ...原创 2019-06-24 17:07:15 · 788 阅读 · 0 评论 -
docker lnmp lamp 搭建
镜像的构建是基于centos7.2镜像,然后yum安装lnmplnmp 环境php7.0yum安装 lnmp软件参考我的另外一篇博客 https://blog.csdn.net/luolaifa000/article/details/86657353登录阿里云Docker Registry$ sudo docker login --username=yumancang1 re...原创 2019-02-17 22:12:03 · 396 阅读 · 0 评论 -
插入排序-PHP
github 地址 : https://github.com/luolaifa000/phpStudyCode/blob/master/InsertSort.php基本思想是每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止 <?phpfunction pre($arr){ $data = func_get_args(); ...原创 2018-12-03 23:14:10 · 116 阅读 · 0 评论 -
选择排序-PHP
github 地址 : https://github.com/luolaifa000/phpStudyCode/blob/master/SelectSort.php基本思想为每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,简单选择排序是不稳定排序<?phpfunction pre($arr){ $data = func_get_...原创 2018-12-03 23:13:08 · 133 阅读 · 0 评论 -
冒泡排序-php
github 地址 : https://github.com/luolaifa000/phpStudyCode/blob/master/BubbleSort.php基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序<?phpfunction pre($arr){ $data = func_get_a...原创 2018-12-03 21:45:14 · 362 阅读 · 0 评论 -
Laravel 流程原理分析
1.将各个基本的路径绑定到容器里面2.将应用对象绑定到容器里面3.将基本的服务器提供者对象 注册到容器里面 (事件驱动服务提供者,日志服务提供者,路由相关服务提供者,后面会调用相关服务)4.定义核心的别名5.最后是返回一个app应用实例1.Illuminate\Contracts\Http\Kernel::class 就是生成 App\Http\Kernel::class 类2.make方法 是...原创 2018-05-31 15:39:24 · 3028 阅读 · 0 评论 -
使用 satis 搭建一个私有的 Composer 包仓库
使用 satis 搭建一个私有的 Composer 包仓库在我们的日常php开发中可能需要使用大量的composer包,大部份都可以直接使用,但在公司内部总有一小部份包是不能公开的,这时候我们就需要搭建一个公司内部使用的composer仓库,好在composer官方有提供这样的工具satis和toran proxy,satis搭建相对简单一些,我们今天就选用satis进行。安装cd /data/w...转载 2018-04-28 16:29:56 · 417 阅读 · 1 评论 -
PHP 代码规范
PHP 代码规范(一)关于「能愿动词」的使用文档大量使用了「能愿动词」,为了避免歧义,对应的解释如下:1、必须 (MUST):绝对,严格遵循,请照做,无条件遵守;2、一定不可 (MUST NOT):禁令,严令禁止;3、应该 (SHOULD) :强烈建议这样做,但是不强求;4、不该 (SHOULD NOT):强烈不建议这样做,但是不强求;5、可以 (MAY) 和 可选 (OPTIONAL) :选择性...原创 2018-04-28 15:39:25 · 910 阅读 · 0 评论 -
Windows下Git多账号配置,同一电脑多个ssh-key的管理
这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有一些提到一些基础的操作。 本文以配置github.com账号和git.oschina.net账号来逐步演示在Windows环境下配置Git多账号支持即在同一个电脑上管理多个ssh-key,对git多一分了解。 备注:这篇文章所有执行命令的地方都是在管理员模式...转载 2018-04-25 17:09:43 · 166 阅读 · 0 评论 -
Git常用命令总结
git init 在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹. git clone 获取一个url对应的远程Git repo, 创建一个local copy. 一般的格式是git clone [url]. clone下来的repo会以url最后一个斜线后面的名称命名,创建一个文件夹,如...转载 2018-04-25 17:10:05 · 85 阅读 · 0 评论 -
php高精度计算问题
php高精度计算问题从事金融行业,资金运算频繁,这里说下我遇到的坑....稍不留神,用户资金可能损失几十万,甚至更可怕......直接上实例吧:javascript0.1 + 0.2 为啥不等于 0.3 ? (正确结果:0.30000000000000004)0.8 * 7 为啥不等于 5.6 ? (正确结果:5.6000000000000005)PHPvar_dump(intval(0.58 *...转载 2018-04-25 17:11:03 · 102 阅读 · 0 评论 -
多个git账号之间的切换
多个git账号之间的切换DEC 7TH, 2014 | COMMENTS做过很多遍了,却总是记不住,这回从头来描述一下。注意clone的时候 有2种 https和SSH 是有区别的使用https方式的git地址非常直接(https://xxx.oschina.net/xxx.git),基本上什么都不需要配置,不管是git bash还是tortoisegit都能完美使用,但是每次需要连接远程服...转载 2018-04-25 17:10:28 · 3002 阅读 · 0 评论 -
OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify f
SSL operation failed with code 1. OpenSSL Error messages:error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed解决方案1.服务器要下个根证书,跟服务端加密通信.2.请求的时候绕过httpscurl_setopt($ch, CURLOP...原创 2018-04-11 11:07:53 · 5921 阅读 · 0 评论 -
GIT 合并代码和拉取远程分支合并本地的问题
1. git fetch:相当于是从远程获取最新版本到本地,不会自动mergegit pull = git fetch + git mergegit pull --rebase = git fetch + git rebase场景: 昨天拉取过最新的,但是今天早上同事有更新PUSH这个代码,然后你本地有改动,然后在PULL 最新的代码会出现这个。git log parent1 hash 就是你在P...原创 2018-06-28 12:11:52 · 4536 阅读 · 0 评论 -
MYSQL 索引利用实践
1.索引越少越好2.最窄的字段放在键的左边3.避免file sort排序,临时表和表扫描.mysql索引方式FULLTEXT,HASH,BTREE,RTREE常用索引的类型主键索引(特殊的唯一索引)、唯一索引、普通索引、全文索引、组合索引(联合索引,多列索引) 创建索引的原则1、以B数索引最左前缀的规则创建索引。2、优先创建联合索引而不是单列索引 3、创建索引时要考虑索引的基数(基数越大,重复值越...转载 2018-06-28 15:26:13 · 304 阅读 · 0 评论 -
MYSQL 自增锁
背景先描述下故障吧step0: 环境介绍1. MySQL5.6.272. InnoDB3. Centos基本介绍完毕,应该跟大部分公司的实例一样CREATETABLE`new_table`( `id` int(11) NOT NULL AUTO_INCREMENT, `x` varchar(200) DEFAULT ‘‘, PRIMARY KEY (`id`)...原创 2018-07-18 15:54:07 · 2225 阅读 · 0 评论