
PHP
文章平均质量分 57
csdnhyp
这个作者很懒,什么都没留下…
展开
-
断点续传
断点续传断点续传就是使浏览器分段下载文件的一种实现方式。在 HTTP/1.1 开始支持。当我们需要下载很大的文件时,如果一次性将文件取出然后返回给客户端,一般会导致OOM错误。此时我们就需要断点续传的技术将数据分批输出。断点续传主要用到HTTP请求头中的content-range 字段,具体见下方代码注解<?php$filesize = filesize("./logs/2020-06-09.log");header("Content-type: application/octet-str原创 2020-12-19 17:29:08 · 805 阅读 · 2 评论 -
PHP-FPM源码分析
PHP-FPM源码分析一个请求从浏览器到达PHP脚本执行中间有个必要模块是网络处理模块,FPM是这个模块的一部分,配合fastcgi协议实现对请求的从监听到转发到PHP处理,并将结果返回这条流程。FPM采用多进程模型,就是创建一个master进程,在master进程中创建并监听socket,然后fork多个子进程,然后子进程各自accept请求,子进程在启动后阻塞在accept上,有请求到达后开始读取请求 数据,读取完成后开始处理然后再返回,在这期间是不会接收其它请求的,也就是说fpm的子进程同时只能响应原创 2020-11-04 11:45:57 · 734 阅读 · 0 评论 -
PHP-FPM中-D命令的实现
PHP-FPM中-D命令的实现众所周知,php-fpm是fastcgi的管理程序,环境部署中我们使用php-fpm -D 来启动fpm进程,从而监听9000端口来处理nginx转发过来的request任务。关于fpm的启动之后也准备梳理一篇,本文主要是说一下 -D 这个命令,既而通过这个命令研究下在Linux下如何编写daemon进程。什么是Daemon进程Daemon进程是运行在后台的一种进程,它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服原创 2020-10-23 10:46:52 · 1477 阅读 · 0 评论 -
容器化时代如何调试容器内线程
容器化时代如何调试容器内线程容器化时代服务都是运行在一个个权限较低的docker内部,当服务异常是很难在docker内执行gdb、perf等调试工具去进行运行时分析,此时我们需要登录到pod所在的node节点的宿主机上以root权限来进行调试。安装nsenteryum install util-linux什么是nsenter一个最典型的用途就是进入容器的网络命令空间。相当多的容器为了轻量级,是不包含较为基础的命令的,比如说 ip address,ping,telnet,ss,tcp原创 2020-10-12 12:32:21 · 395 阅读 · 1 评论 -
mac编译php7异常
mac编译php7异常./configure --enable-debug异常checking for bison... bisonchecking for bison version... 3.5.4 (ok)checking for re2c... noconfigure: error: re2c 0.13.4 is required to generate PHP lexers.下载wget https://github.com/skvadrik/re2c/releases/d原创 2020-07-28 16:53:52 · 693 阅读 · 0 评论 -
PHP的输出缓冲区
PHP的输出缓冲区在PHP中有一个名为“输出缓冲区”「ob」的东西。PHP的输出流包含很多字节,通常是echo语句或者printf()函数输出的。这些东西的数据需要用到输出缓冲区。一般PHP的输出就是按照上面这张图在各个缓冲区间流转,但是cli模式下有些特殊。在cli模式下ini的配置中_output_buffer_选项强制设置为0、_implicit_flush_的值也会被设置为1。output_buffer=0: 表示禁用默认PHP输出缓冲区。所以在cli中国呢,默认情况下你要输出的东西会直接原创 2020-07-08 17:57:36 · 280 阅读 · 0 评论 -
Guzzle中的异步请求
Guzzle中的异步请求使用Guzzle发起异步请求Guzzle是一个PHP的HTTP客户端,它在发起http请求时不仅可以同步发起,还可以异步发起。$client = new Client();$request = new Request('GET', 'http://www.baidu.com');$promise = $client->sendAsync($request)->then(function ($response) { echo $response->get原创 2020-06-11 12:41:36 · 4650 阅读 · 0 评论 -
Mac下安装PHP开发调试环境(ngnix+php72+xdebug)
Mac下安装PHP开发调试环境(ngnix+php72+xdebug) 从事php开发已经近两年了,之前调试一直是通过古老的echo和die配合,自从接触php以来一直不习惯这种动态语言的的调试方式,一直想用一用xdebug像静态语言那样调试。曾经也尝试搭建多次,但遇到了各种各样的坑。最近想追踪一下laravel的源码,被其中各种依赖注入的方式搞的...原创 2018-08-26 18:15:55 · 2093 阅读 · 0 评论 -
Lnmp的运维追踪技巧总结
LNMP的运维追踪技巧总结曾几何时我开始运维公司的LNMP网站,经过一段时间的摸爬滚打,也算是总结了不少在LNMP服务器下调试追踪各种网站错误的方法。好记性不如烂笔头,还是总结一下吧!在开始我会梳理一下我所理解的一个web请求从发起到响应的各个阶段服务器和浏览器分别做了什么。所以的用户响应异常都是发生在这个流程中的,知道每个流程的细节可以通过不同的方法分别定位异常发生在哪个阶段,从而更准确...原创 2018-07-12 16:58:04 · 421 阅读 · 0 评论 -
Mac下安装pthread扩展
简介pthreads 是一组允许用户在 PHP 中使用多线程技术的面向对象的 API。 它提供了创建多线程应用所需的全套工具,无论是 Web 应用还是控制台应用。 通过使用 Thread, Worker 以及 Threaded 对象,PHP 应用可以创建、读取、写入以及执行多线程应用,并可以在多个线程之间进行同步控制。安装Mac下安装软件可以通过homebrew命令来执行,如果没有brew需要先安装原创 2017-09-06 10:11:51 · 5082 阅读 · 0 评论 -
Laravel源码分析----CSRF处理
跨站点请求伪造CSRF攻击攻击者盗用用户身份,通过伪造的身份以用户的名义进行非法请求从而在未经用户许可下完成某些非法操作。Laravel的CSRF处理在开启session时为每个session分配一个tokenpublic function regenerateToken() { $this->put('_token', Str::random(40));}引入VerifyCsrfTok原创 2017-07-14 13:22:10 · 690 阅读 · 0 评论 -
Web攻击原理及其防护
Dos、DDos攻击拒绝服务攻击。攻击者想办法让目标服务器停止提供服务或资源访问。攻击者进行攻击时实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,不接收新的请求;二是通过IP欺骗,迫使服务器把合法用户的连接复位,影响用户的连接。防护: 1. 建立ip白名单,禁止异常ip访问。 2. 使用验证码机制跨站点请求伪造CSRF攻击者盗用用户身份,通过伪造的身份以用户的名义进行非法请求从而在未经用户原创 2017-06-21 15:32:26 · 850 阅读 · 0 评论 -
细说php中的curl
curl可以使用url的语法模拟浏览器来传输数据,支持:FTP、FTPS、HTTP、FILE。。。。等一系列协议,包括HTTPS认证,HTTP post方法,HTTP put方法,FTp上传,keyberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证等。curl简单请求实例function http_get($url){ // 实例化一个新的curl资源 $curl转载 2017-02-24 17:23:39 · 467 阅读 · 0 评论 -
正则表达式
正则表达式 正则表达式是一种字符串搜索和匹配的工具。正则表达式基本语法界定符表示一个正则表达式的开始和结束 /[0-9]/、#[0-9]#、{[0-9]}中的/、#、{ 都可以做界定符。 原子Unicode编码输出的字符单位原子的筛选方式| 匹配两个或多个分支选择[] 匹配方括号中的任意一个原子[^] 匹配除方括号中的原子之外的任意字符原子集合的筛选方式. 匹配除换原创 2016-06-10 15:35:37 · 657 阅读 · 0 评论 -
PHP项目开发流程
PHP项目开发流程需求分析系统分析系统目标系统功能结构 业务逻辑结构,重点确定开发环境文件夹结构设计数据库设计数据库分析 根据系统分析和系统功能结构,规划出本系统的数据库实体关系E-R图创建数据库和数据表编写数据库连接文件模块化编程开发总结原创 2016-06-06 20:43:59 · 2303 阅读 · 0 评论 -
Php的魔术常量
魔术常量PHP向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由于不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。LINE 表示文件中的当前行号。FILE 文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。FUNCTION 函数名称。自PHP5起本常量返回该函数被定义时的名字。CLASS 类的名称。自PHP5起本常量返回原创 2016-06-12 16:27:17 · 429 阅读 · 0 评论 -
PHP学习(一)
PHP学习(一)cookieCookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据.一般情况下,Cookie通过HTTP headers从服务器端返回到客户端.多数web程序都支持Cookie操作,因为Cookie是存在于HTTP的标头之中,所以必须在其他信息输出以前进行设置,类似于header函数的使用限制. PHP通过setcookie函数进行Cookie的设置,任原创 2016-07-13 16:22:58 · 740 阅读 · 0 评论 -
php提示undefined index的几种解决办法
php提示undefined index的几种解决方法 虽然可以通过设置错误显示方式来隐藏这个提示,但是这样也有隐患,就是在服务器的日志中会记录这些提示,导致日志文件异常庞大平时用POST[′′],_POST[''],_GET[”]获取表单中参数时会出现 Notice: Undefined index: --------; 我们经常接收表单POST过来的数据时报Undefined i转载 2016-08-06 21:32:42 · 8015 阅读 · 0 评论 -
PHP下操作MySql
php与数据库建立连接mysql_connect(“数据库主机名或IP”,”用户名”,”密码”);连接成功时:返回mysql**连接标识符**;连接失败时:返回false;mysql扩展进行数据库连接的方法:mysql扩展:$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password');PDO扩展:$dsn = 'mysq原创 2016-06-06 10:15:59 · 259 阅读 · 0 评论 -
TP框架的目录结构总结
用thinkphp开发了好些项目了;最近准备抽空写一些经验总结; 希望能给刚开始接触tp的童鞋们提供一些开发的方案;少走一些弯路;少踩一些坑; 这些绝对都是些精华干货;耐着性子阅读;相信肯定是会有收获的; 先从thinkphp的目录架构开始吧; koudaigaoxiao ├─Application 项目逻辑目录 │ ├─Common 公共模块 │ │ ├─转载 2016-09-26 15:31:00 · 10604 阅读 · 0 评论 -
ThinkPHP的钩子实现原理
ThinkPHP中钩子Hook机制的原理钩子是一种触发机制,如同一个陷阱,当程序运行到某个地方时就会触发这个陷阱,然后执行这个Hook,执行完成后,系统根据执行的不同结果继续进行.关于这个理解我第一次是在下面这篇博文上见到的:thinkphp钩子的实现框架在\Think\Think->start()方法中调用Hook类中的import方法批量加载模式行为:默认为\Model\common.php中原创 2017-02-01 13:01:13 · 3793 阅读 · 0 评论 -
ThinkPHP源码分析----异常处理
ThinkPHP的异常处理TP框架的基础类加载多放在\Think\Think这个类里,异常处理也不例外. 如图,TP在start方法中定义自定义错误和异常处理函数,以及脚本关闭函数.下面来看看各自的源码,在此之前先看一个错误输出函数,这个函数将会在各个处理函数中被调用:static public function halt($error) {. $e = array(); if原创 2017-02-01 16:30:44 · 1852 阅读 · 0 评论