php相关
文章平均质量分 86
汪威
这个作者很懒,什么都没留下…
展开
-
hyperf使用需要注意的地方
jwt DateTimeImmutable 报错:jwt DateTimeImmutable 问题 降低版本到3.3.3解决问题: composer require lcobucci/jwt:3.3.3hyperf使用注解的坑,hyperf使用注解会让注解的实例变为单例,问题1:model产生问题 ***如果我们注解一个model给变量,当有两个地方会查询数据,第一个查询会是A+B连接查询,第二个是A+B+C连接查询,如果第二个查询有一个参数时C的,执行二后在执行第一个会导致报错,报C中的参.原创 2020-12-16 15:17:07 · 7007 阅读 · 0 评论 -
hyperf依赖注入和控制反转
依赖注入和控制反转之前在laravel会用到依赖注入和控制反转,面试也会遇到,一直觉得自己明白的很透彻了,现在hyperf框架又遇到,发现疑问重重,特此整理一下,以免后期再不明白概念1. 依赖注入(DI)对象之间依赖关系由容器在运行期决定,由容器动态的将依赖关系注入到对象之中2. 控制反转(Ioc)即把对象的调用权反转交给容器进行装配和管理注入的实现1. 普通注入1.1 简单对象注入Controller是由DI进行创建管理的,所以可以其构造函数上的参数会自动进行注入当您希原创 2020-12-14 13:20:59 · 2252 阅读 · 0 评论 -
Nginx与PHP交互过程 + Nginx与PHP通信的两种方式
一、Nginx与PHP交互过程的7步走(用户对动态PHP网页访问过程)step1:用户将http请求发送给nginx服务器(用户和nginx服务器进行三次握手进行TCP连接)step2:nginx会根据用户访问的URI和后缀对请求进行判断step3:通过第二步可以看出,用户请求的是动态内容,nginx会将请求交给fastcgi客户端,通过fastcgi_pass将用户的请求发送给php-fpm如果用户访问的是静态资源呢,那就简单了,nginx直接将用户请求的静态资源返回给用户。step4:wra转载 2020-09-24 22:18:18 · 784 阅读 · 0 评论 -
php 接口的安全实现
https://www.cnblogs.com/afsj/p/7424320.htmlPHP做APP接口时,如何保证接口的安全性?1、当用户登录APP时,使用https协议调用后台相关接口,服务器端根据用户名和密码时生成一个access_key,并将access_key保存在session中,将生成的access_key和session_id返回给APP端。2、APP端将接收到的access_key和session_id保存起来3、当APP端调用接口传输数据时,将所传数据和access_key转载 2020-09-20 11:28:18 · 537 阅读 · 1 评论 -
PHP的生成器、yield和协程
PHP的生成器、yield和协程虽然之前就接触了PHP的yield关键字和与之对应的生成器,但是一直没有场景去使用它,就一直没有对它上心的研究。不过公司的框架是基于php的协程实现,觉得有必要深入的瞅瞅了。由于之前对于生成器接触不多,后来也是在看了鸟哥的介绍在PHP中使用协程实现多任务调度才有所了解。下面也只是说说我的理解。迭代和迭代器在了解生成器之前我们先来看一下迭代器和迭代。迭代是指反复执行一个过程,每执行一次叫做迭代一次。比如普通的遍历便是迭代:$arr = [1, 2, 3,转载 2020-09-19 09:48:23 · 219 阅读 · 0 评论 -
PHP实现pdf转图片
1、依赖:imagick扩展以及ghostscriptdocker:apt-get update && \apt-get install -y --no-install-recommends libmagickwand-dev && \pecl install imagick-3.4.3 && \apt-get install ghos...原创 2019-12-05 21:50:46 · 4937 阅读 · 0 评论 -
PHP 在 Docker 中扩展汇总
# PHP 容器配置# 从官方基础版本构建FROM php:7.2-fpm# 官方版本默认安装扩展: # Core, ctype, curl# date, dom# fileinfo, filter, ftp# hash# iconv# json# libxml# mbstring, mysqlnd# openssl# pcre, PDO, pdo_sqlite, P...转载 2019-12-04 11:43:17 · 277 阅读 · 0 评论 -
laravel笔记
1. 请求周期:index.php文件加载 Composer 生成的自动加载设置,然后从bootstrap/app.php脚本中检索 Laravel 应用程序的实例。 Laravel 本身采取的第一个动作是创建一个应用程序 /服务容器。接下来, 根据进入应用程序的请求类型来将传入的请求发送到 HTTP 内核或控制台内核。而这两个内核是用来作为所有请求都要通过的中心位置。 现在,我们...原创 2019-11-24 10:13:05 · 173 阅读 · 0 评论 -
supervisor安装配置以及常见的错误
一、安装:liunx:1 - 安装 setuptools (python2)yum install python-setuptools2 - 安装 supervisor (只支持python2)easy_install或者pip安装,注意supervisor当前只有python2支持的版本。pip install supervisorMac:安装:brew install supe...原创 2019-05-11 16:20:38 · 10278 阅读 · 2 评论 -
php基础语法底层实现
一、静态变量:特点:静态变量函数返回调用之时并不会释放,它的结果会被保留到下次函数的调用,其生命周期比局部变量长;静态变量可以分为:静态全局变量,PHP中的全局变量也可以理解为静态全局变量,因为除非明确unset释放,在程序运行过程中始终存在。 静态局部变量,也就是在函数内定义的静态变量,函数在执行时对变量的操作会保持到下一次函数被调用。 静态成员变量,这是在类中定义的静态变量,和实...原创 2019-04-20 18:32:14 · 150 阅读 · 0 评论 -
传统序列式软件开发方法的缺点,以及迭代开发方法的选择
程读书笔记大部分公司仍使用传统瀑布模型(或序列式开发方法)进行开发我所工作过的公司,以及我身边的朋友工作所在的公司,再加上招聘时从求职者那里所了解到的其他一些公 司的开发过程,基本上都是使用传统的软件开发模式,类拟或者就是瀑布开发模式,这种模式有如下特点:1)将项目的生命周期明确地划分为几个阶段,完 成一个阶段才进入下一个阶段。2)在项目初期希望细化所有的需求,并希望...转载 2019-04-15 10:43:32 · 1776 阅读 · 0 评论 -
规则引擎RulerZ用法及实现原理解读
包下载地址:https://github.com/K-Phoen/rulerzcomposer安装:composer require 'kphoen/rulerz'使用:use RulerZ\Compiler\Compiler;use RulerZ\RulerZ;use RulerZ\Target\Native\Native;public function getRulerZ...原创 2019-03-15 11:53:10 · 1114 阅读 · 0 评论 -
chrome-php(一款php模拟chrome或chrome浏览器的插件)
一、安装Mac:首先安装chromedriverbrew tap homebrew/caskbrew cask install chromedriverbrew cask install chromiumbrew cask reinstall chromium引入包地址:https://github.com/chrome-php/headless-chromium-php...原创 2019-04-01 15:17:41 · 6922 阅读 · 0 评论 -
php的运行原理、cgi对比fastcgi以及php-cgi和php-fpm之间的联系区别
要了解php的运行原理,首先要了解下面几个概念:CGI:CGI的英文是(COMMON GATEWAY INTERFACE)公共网关接口,它的作用就是帮助服务器与语言通信,这里就是nginx和php进行通信,因为nginx和php的语言不通,因此需要一个沟通转换的过程,而CGI就是这个沟通的协议。nginx服务器在接受到浏览器传递过来的数据转载 2018-01-17 16:31:50 · 202 阅读 · 0 评论 -
ThinkPHP 在nginx环境下去掉URL中的index.php
在Nginx低版本中,是不支持PATHINFO的,但是可以通过在Nginx.conf中配置转发规则实现:location /{// …..省略部分代码if(!-e $request_filename){rewrite^(.*)$/index.php?s=$1last;break;}} 其实内部是转发到了ThinkPHP提供的兼容模式的URL,利用这种方式,可以解转载 2018-01-17 17:02:12 · 1344 阅读 · 0 评论 -
php 处理高精度计算函数
方法1:PHP 为任意精度数学计算提供了二进制计算器(Binary Calculator),它支持任意大小和精度的数字,以字符串形式描述bcadd — 加法bccomp — 比较bcdiv — 相除bcmod — 求余数bcmul — 乘法bcpow — 次方bcpowmod — 先次方然后求余数bcscale — 给所有函数设置小数位精度bcsqrt — 求平方根bcsub — 减法方法二:最近...原创 2018-03-16 10:27:20 · 8429 阅读 · 0 评论 -
PHP中的use、命名空间、引入类文件、自动加载类的理解
use只是使用了命名空间, 但是要想调用类,必须要加载类文件,或者自动加载。即便是引入了其中一个类,如果没有自动加载机制,还是会报错use的几种用法namespace Blog\Article; class Comment { }//创建一个BBS空间(我有打算开个论坛) namespace BBS;//导入一个命名空间 use Blog\Article; //导入命名空间后可使用限定名称调用元素...原创 2018-03-16 20:29:23 · 2747 阅读 · 1 评论 -
解决因为本地代码和远程代码冲突,导致git pull无法拉取远程代码的问题
一、问题 当本地代码和远程代码有冲突的时候,执行git pull操作的时候,会提示有冲突,然后直接终止本次pull,查了些资料没有找到强制pull的方式,但是可以使用如下方式解决。 二、解决思路 可以先将本地内容stash到仓库中,执行stash操作后,本地代码将返回到修改前的内容。这时,就可以正常将远程代码下载到本地了。然后再通过stash操作将仓库中的内容合到本地,如果有冲突就可以进行解决...转载 2018-04-21 15:36:05 · 8434 阅读 · 0 评论 -
对幂等的一些理解
https://blog.csdn.net/u010412301/article/details/72843026一、背景1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱;3. 发送消息,也应该只发一次,同样的短信发给用户,用户会哭的;4. 创建业务订单,一次业...原创 2019-02-11 18:50:13 · 332 阅读 · 0 评论 -
php7的新特征
1、函数的行参类型可以是标量,在 PHP 5 中只能是类名、接口、array 或者 callable (PHP 5.4,即可以是函数,包括匿名函数),现在也可以使用 string、int、float和 bool 了。标量的模式有强制模式和严格模式两种,模式声明:declare(strict_types=1); 默认情况值为0,值为1代表为严格校验的模式 强制模式:严格模式:...原创 2019-01-18 23:29:37 · 262 阅读 · 0 评论 -
php中trait的使用
理解:Trait:是一种代码复用技术,为php单继承限制提供了一套灵活的代码复用机制。Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。Trait 和 Cla...原创 2019-02-22 15:01:07 · 200 阅读 · 0 评论 -
PHP运行主要步骤
基于进程的模型,每个PHP解释器都被操作系统隔离到自己的进程中.这种模式在Unix下很常见.下面有三个进程,每个进程先运行一个minit(),然后每个请求是一个RINIT().....RSHUTDOWN(),多个请求是串行的。基于线程的模型,每个PHP解释器都使用线程库隔离成一个线程.该模型主要用于Windows操作系统,但也可以与大多数Unix一起使用.这需要PHP及其扩展在ZT...转载 2019-02-24 17:52:10 · 576 阅读 · 0 评论 -
PHP中array_merge函数与array+array的区别
在PHP中可以使用array_merge函数和两个数组相加array+array的方式进行数组合并,但两者效果并不相同,下面为大家介绍两者具体的使用区别.区别如下: 当下标为数值时,array_merge()不会覆盖掉原来的值,但array+array合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖)存在的坑:(我们一般的需求是合并两个...原创 2019-02-13 19:56:05 · 3313 阅读 · 0 评论 -
yum、rpm以及composer的区别,以及Composer安装和使用
12300首先应区别的是包管理器和依赖管理工具: yum和rpm都是包管理器,可以为系统安装升级软件; Composer 是 PHP5.3以上 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。Composer 不是一个包管理器。是的,它涉及 "packages" 和 "libraries",但它在转载 2017-09-28 11:21:28 · 1515 阅读 · 0 评论