PHP
文章平均质量分 63
PHP相关问题
weixin_41882200
星光不问赶路人,干就完了!
展开
-
swoole入门
Worker进程 其实就是处理各种业务工作的进程,Manager将数据包转交给Worker进程,然后Worker进程进行具体的处理,并根据实际情况将结果反馈给客户端。Manager进程还负责监控Worker进程,如果Worker进程因为某些意外挂了,Manager进程会重新拉起新的Worker进程。所以,一个最基础的Swoole Server,至少需要有3个进程,分别是Master进程、Manager进程和Worker进程。Swoole支持AsyncTask,消息队列,毫秒定时器,异步文件读写等功能。原创 2023-02-14 15:49:25 · 920 阅读 · 0 评论 -
CLI和CGI的区别
CGI :“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。以CGI方式运行时,web server将用户请求以消息的方式转交给PHP独立进程,PHP与web服务之间无从属关系。纯粹调用–返回结果的形式通讯。而模块方式,则是将PHP做为web-server的子进程控制,两者之间有从属关系。最明显的例子就是在CGI模式下,如果修改了PHP.INI的配置文件,不用重启web服务便可生效,而模块模式下则需原创 2021-06-09 22:05:52 · 351 阅读 · 0 评论 -
深入理解PHP数组底层实现
PHP数组是一个神奇而强大的数据结构,数组既可以是连续的数组,也可以是存储K-V映射的map。而在PHP7中,相比于PHP5,对数组进行了很大的修改。数组的语义数组的概念PHP5数组的实现PHP7数组的实现基本结构初始化packed array 和 hash array的区别插入、更新、查找、删除哈希冲突的解决扩容和rehash操作数组的递归保护一、数组的语义本质上,PHP数组是一个有序的字典,它需要同时满足一下两个语义。语义一:PHP数组是一个字典,存储着键—值(key—v转载 2021-06-02 09:42:34 · 784 阅读 · 1 评论 -
PHP底层数组如何实现元素的有序性
PHP 数组的基本实现散列表主要由两部分组成:存储元素数组、散列函数。散列表的基本实现前面已经探讨过,PHP 中的数组除了具备散列表的基本特点之外,还有一个特别的地方,那就是它是有序的(与Java中的HashMap的无序有所不同):数组中各元素的顺序和插入顺序一致。这个是怎么实现的呢?为了实现 PHP 数组的有序性,PHP 底层的散列表在散列函数与元素数组之间加了一层映射表,这个映射表也是一个数组,大小和存储元素的数组相同,存储元素的类型为整型,用于保存元素在实际存储的有序数组中的下标 —— 元素按照先原创 2021-05-31 15:36:03 · 467 阅读 · 3 评论 -
PHP反射机制原理与用法详解
反射面向对象编程中对象被赋予了自省的能力,而这个自省的过程就是反射。反射,直观理解就是根据到达地找到出发地和来源。比如,一个光秃秃的对象,我们可以仅仅通过这个对象就能知道它所属的类、拥有哪些方法。反射是指在PHP运行状态中,扩展分析PHP程序,导出或提出关于类、方法、属性、参数等的详细信息,包括注释。这种动态获取信息以及动态调用对象方法的功能称为反射API。如何使用反射API<?phpclass person{public $name;public $gender;public fu转载 2021-05-26 18:00:31 · 177 阅读 · 0 评论 -
php 的生命周期
1、PHP的运行模式:PHP两种运行模式是WEB模式、CLI模式。无论哪种模式,PHP工作原理都是一样的,作为一种SAPI运行。1、当我们在终端敲入php这个命令的时候,它使用的是CLI。它就像一个web服务器一样来支持php完成这个请求,请求完成后再重新把控制权交给终端。2、当使用Apache或者别web服务器作为宿主时,当一个请求到来时,PHP会来支持完成这个请求。一般有:多进程(通常编译为apache的模块来处理PHP请求)多线程模式简要的执行过程:PHP是随着Apache的启动而转载 2021-05-26 17:27:23 · 800 阅读 · 0 评论 -
图解PHP对象在内存中的分配
内存从逻辑上说大体上是分为4 段,栈空间段、堆空间段、代码段、初始化静态段,程序里面不同的声明 放在不同的内存段里面。数据段(data segment)通常是指用来存放程序中已初始化且不为0的全局变量如:静态变量和常量代码段(code segment / text segment)通常是指用来存放程序执行代码的一块内存区域,比如函数和方法;栈空间段是存储占用相同空间长度并且占用空间小的数据类型的地方,比如说整型1,10,100,1000,10000,100000 等等,在内存里面占用空间是等长的转载 2021-05-10 22:07:25 · 253 阅读 · 0 评论 -
php内存回收机制的学习
今天朋友去面试,回来问了一下怎么样,结果他说一脸懵逼,看来我们平时还是学习的太少了啊。于是比较好奇,果断问了一下都有哪些问题,朋友说第一个问题就是“描述PHP的垃圾回收机制”,我当时听了也是一脸茫然,因为平时我们业务逻辑写的太多,很少去关注这些,但是没办法,既然有人问这个问题,看来还是很有必要了解一下的。于是马上搜了一下,网上资料文章很多,看了几篇后加上自己的一些理解记录一下。首先看了一下官方手册,只有php5.3版本以后的才有了所谓的新的垃圾回收机制GC,那么以前是怎么干的呢?以前是基于引用计数的方式,转载 2021-05-10 21:37:45 · 256 阅读 · 0 评论 -
laravel核心服务
服务容器1.服务容器laravel服务容器是一个用于管理类依赖以及实现依赖注入的强有力的工具。依赖注入这个名词表面看起来花哨,实质是指:通过构造函数,或者某些情况下通过[setter]方法将类依赖【注入】到类中。如装药的药盒也是容器的一种。2.服务绑定想要把服务放到容器中去,需要使用服务绑定。服务绑定主要有以下几种方式:1.简单绑定 - bind方法2.绑定一个单例 -singleton方法3.绑定一个实例 -instance方法4.绑定接口到实现 -绑定的标识是一个契约语法 $this原创 2021-04-30 16:13:53 · 233 阅读 · 4 评论 -
fpm与swoole区别
一.PHP-FPM早期版本的 PHP 并没有内置的 WEB 服务器,而是提供了 SAPI(Server API)给第三方做对接。现在非常流行的 php-fpm 就是通过 FastCGI 协议来处理 PHP 与第三方 WEB 服务器之间的通信。比如 Nginx + php-fpm 的组合,这种方式运行的 fpm 是 Master/Worker 模式,启动一个 Master 进程监听来自 Nginx 的请求,再 fork 多个 Worker 进程处理请求。每个 Worker 进程只能处理一个请求,单一进程的转载 2021-04-26 16:43:07 · 920 阅读 · 0 评论 -
PHP7开启opcache打造强悍性能
鸟哥在博客中说,提高PHP 7性能的几个tips,第一条就是开启opcache:记得启用Zend Opcache, 因为PHP7即使不启用Opcache速度也比PHP-5.6启用了Opcache快,所以之前测试时期就发生了有人一直没有启用Opcache的事情那么什么是Opcache呢?Opcache 的前生是 Optimizer+ ,它是PHP的官方公司 Zend 开发的一款闭源但可以免费使用的 PHP 优化加速组件。 Optimizer+ 将PHP代码预编译生成的脚本文件 Opcode 缓存在共享转载 2021-04-26 15:54:42 · 413 阅读 · 0 评论 -
laravel框架加载流程
public/index.php此文件会加载由 Composer 生成的自动加载器定义并获取由 bootstrap/app.php 文件中所生成的 Laravel 应用程序实例bootstrap/app.php生成Laravel应用程序实例 $app并且绑定核心 AppHttpKernel::class 或 AppConsoleKernel::class这取决于请求类型 在这里请求经过一些列操作 最终返回浏览器app/Http/Kernel.php一般情况是 HTTP 请求,所以.原创 2021-04-26 14:12:36 · 590 阅读 · 2 评论 -
PHP常见问题
1. PHP7为什么比PHP5快?存储变量的结构体变小,结构体成员共用内存空间,减少引用,内存占用率降低,变量的操作速度得以提升。字符串结构体的改变,字符串信息和数据本身原来是分成两个独立内存块存放,PHP7尽量将他们存入同一个内存块,提升了CPU的缓存命中率。数组结构的改变,数组元素和hash映射表在PHP5中会存入多个内存块,PHP7尽量将他们分配在同一个内存块,降低内存占用,提升cpu的缓存命中率。改进了函数的调用机制,通过对参数传递环节的优化,减少一些指令,提升执行效率。...原创 2021-04-12 19:15:48 · 70 阅读 · 0 评论 -
fastcgi原理 及 fastcgi_param 详解
一、FastCGI是什么?FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail-Over特性等等。FastCGI的工作原理是:1、Web Server 启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module,nginx 下 fastcgi 与服务器转载 2021-03-19 16:21:06 · 5903 阅读 · 0 评论 -
源码安装PHP扩展的两种方式
Pear:php代码层面的扩展,PEAR的所有扩展都是用纯粹的PHP代码编写的,用户在下载到PEAR 扩展以后可以直接使用将扩展的代码包含到自己的PHP 文件中使用PECL:底层扩展 而PECL是使用C 语言开发的,通常用于补充一些用PHP难以完成的底层功能,往往需要重新编译或者在配置文件中设置后才能在用户自己的代码中使用PECL 使建立共享 PHP 扩展库更容易。用 » pecl 命令这样做:pecl install extnamePhpize:有时候不能用 pecl 安装命令。这可能是因为在防原创 2021-02-19 16:47:06 · 510 阅读 · 0 评论 -
Guzzle PHP HTTP客户端使用
什么是guzzle安装GuzzleGuzzle基本使用List item一.什么是guzzleGuzzle是一个PHP HTTP客户端,可以轻松发送HTTP请求,并且可以轻松集成Web服务。二.安装Guzzle1.使用composer安装composer require guzzlehttp/guzzle2.或者编辑项目的composer.json文件,添加Guzzle作为依赖 { "require": { "guzzlehttp/guzzle": "~6.0".原创 2021-02-19 11:29:26 · 2175 阅读 · 3 评论