自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 资源 (1)
  • 收藏
  • 关注

原创 断点续传

断点续传断点续传就是使浏览器分段下载文件的一种实现方式。在 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 767 2

原创 PHP-FPM源码分析

PHP-FPM源码分析一个请求从浏览器到达PHP脚本执行中间有个必要模块是网络处理模块,FPM是这个模块的一部分,配合fastcgi协议实现对请求的从监听到转发到PHP处理,并将结果返回这条流程。FPM采用多进程模型,就是创建一个master进程,在master进程中创建并监听socket,然后fork多个子进程,然后子进程各自accept请求,子进程在启动后阻塞在accept上,有请求到达后开始读取请求 数据,读取完成后开始处理然后再返回,在这期间是不会接收其它请求的,也就是说fpm的子进程同时只能响应

2020-11-04 11:45:57 691

原创 kqueue用法简介

kqueue用法简介什么是kqueue和IO复用kqueue是在UNIX上比较高效IO复用技术。    所谓的IO复用,就是同时等待多个文件描述符就绪,以系统调用的形式提供。如果所有文件描述符都没有就绪的话,该系统调用阻塞,否则调用返回,允许用户进行后续的操作。常见的IO复用技术有select, poll, epoll以及kqueue等等。其中epoll为Linux独占,而kqueue则在许多UNIX系统上存在。相关的数据结构kqueue有三个主要的东西:struc

2020-11-03 18:37:17 2223

原创 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 1438

原创 容器化时代如何调试容器内线程

容器化时代如何调试容器内线程容器化时代服务都是运行在一个个权限较低的docker内部,当服务异常是很难在docker内执行gdb、perf等调试工具去进行运行时分析,此时我们需要登录到pod所在的node节点的宿主机上以root权限来进行调试。安装nsenteryum install util-linux什么是nsenter一个最典型的用途就是进入容器的网络命令空间。相当多的容器为了轻量级,是不包含较为基础的命令的,比如说 ip address,ping,telnet,ss,tcp

2020-10-12 12:32:21 358 1

原创 更新yum源

更新yum源备份mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup下载新的CentOS-Base.repo 到/etc/yum.repos.d/wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo运行yum makecache生成缓存yum makecache

2020-07-28 16:56:26 114

原创 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 660

原创 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 253

原创 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 4488

原创 DevOps初体验

持续集成工作流和分支策略master分支master分支永远指向线上的生产环境,且只有master分支可以指向线上生产环境。新特性分支新特性的开发分支以版本号递增命名(如v1.1.5),项目结束后可以删除。多个新特性同时开发应该创建多个开发分支,分别以不同的版本号命名(如v1.1.4.1)修复分支修复分支用于从master切出来用于修复线上bug的紧急调试分支。分支命名使用 ...

2020-02-11 23:58:15 222

原创 Mac下安装PHP开发调试环境(ngnix+php72+xdebug)

Mac下安装PHP开发调试环境(ngnix+php72+xdebug)&nbsp;&nbsp;&nbsp;&nbsp;从事php开发已经近两年了,之前调试一直是通过古老的echo和die配合,自从接触php以来一直不习惯这种动态语言的的调试方式,一直想用一用xdebug像静态语言那样调试。曾经也尝试搭建多次,但遇到了各种各样的坑。最近想追踪一下laravel的源码,被其中各种依赖注入的方式搞的...

2018-08-26 18:15:55 2072

原创 Lnmp的运维追踪技巧总结

LNMP的运维追踪技巧总结曾几何时我开始运维公司的LNMP网站,经过一段时间的摸爬滚打,也算是总结了不少在LNMP服务器下调试追踪各种网站错误的方法。好记性不如烂笔头,还是总结一下吧!在开始我会梳理一下我所理解的一个web请求从发起到响应的各个阶段服务器和浏览器分别做了什么。所以的用户响应异常都是发生在这个流程中的,知道每个流程的细节可以通过不同的方法分别定位异常发生在哪个阶段,从而更准确...

2018-07-12 16:58:04 397

原创 Mac下安装pthread扩展

简介pthreads 是一组允许用户在 PHP 中使用多线程技术的面向对象的 API。 它提供了创建多线程应用所需的全套工具,无论是 Web 应用还是控制台应用。 通过使用 Thread, Worker 以及 Threaded 对象,PHP 应用可以创建、读取、写入以及执行多线程应用,并可以在多个线程之间进行同步控制。安装Mac下安装软件可以通过homebrew命令来执行,如果没有brew需要先安装

2017-09-06 10:11:51 4957

原创 Laravel源码分析----CSRF处理

跨站点请求伪造CSRF攻击攻击者盗用用户身份,通过伪造的身份以用户的名义进行非法请求从而在未经用户许可下完成某些非法操作。Laravel的CSRF处理在开启session时为每个session分配一个tokenpublic function regenerateToken() { $this->put('_token', Str::random(40));}引入VerifyCsrfTok

2017-07-14 13:22:10 673

原创 MySQL主从复制

复制解决的问题MySQL的复制使用二进制文件通常不会对带宽造成很大的压力,复制可以使相同数据很方便的同步到不同的服务器上。通过MySQL复制可以将°操作分布到不同的服务器上,实现对读密集型应用的优化,即达到负载均衡的目的。数据库备份。数据库防灾。工作原理在主库上把数据更改记录到二进制日志中。从库将主库的日志复制到自己的中继日志中。从库读取中继日志中的事件,将其重放到备库数据中。

2017-06-27 12:08:13 362

转载 MySQL中的if和case用法

Mysql中的if既可以作为表达式使用,也可以在存储过程中作为流程控制语句使用。IF表达式IF(expr1,expr2,expr3)如果expr1是TRUE(expr1 <> 0 and expr1 <> NULL),则if()的返回值为expr2,否则为expr3。select *,if(sva=1,"男","女")as sva from tab;作为表达式的if也可以用case when来实

2017-06-27 10:18:28 6326

转载 在windows中安装两个MySQL

正常安装第一个mysql在控制面板中停止第一个mysql服务将第一个mysql目录下的所有目录和文件copy到另一个目录,如c:\mysql2创建第二个mysql的my.ini文件。主要修改端口与路径。创建启动服务 mysqld install MySQL2 –defaults-file=”C:\mysql2\bin\my.ini”修改注册表 HKEY_LOCAL_MACHINE->S

2017-06-26 15:55:29 386

原创 Web攻击原理及其防护

Dos、DDos攻击拒绝服务攻击。攻击者想办法让目标服务器停止提供服务或资源访问。攻击者进行攻击时实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,不接收新的请求;二是通过IP欺骗,迫使服务器把合法用户的连接复位,影响用户的连接。防护: 1. 建立ip白名单,禁止异常ip访问。 2. 使用验证码机制跨站点请求伪造CSRF攻击者盗用用户身份,通过伪造的身份以用户的名义进行非法请求从而在未经用户

2017-06-21 15:32:26 822

转载 【redis学习三】简单高可用redis架构实践 靠谱崔小拽

Evernote Export body, td { font-family: 微软雅黑; font-size: 10pt; } 背景:支撑线上千万级别的天级查询请求,要求高可用。一、方案调研1.1 redis版本选择redis当前主流版本是redis 2.x 和 redis 3.x,3.0对集

2017-03-17 17:14:18 1212

转载 细说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 442

转载 Nginx配置记录

之前总是对Nginx的配置文件了解的不够明细,最近又需要在linux上配置Nginx来运行项目,所以收集整理一下 nginx.conf 配置文件。#运行用户user nobody;#启动进程,通常设置成和cpu的数量相等worker_processes 1;#全局错误日志及PID文件#error_log指令的日志级别配置分别为 错误日志级别和调试日志级别#错误日志级别只能设置一个级别,错

2017-02-24 14:48:30 246

原创 ThinkPHP源码分析----异常处理

ThinkPHP的异常处理TP框架的基础类加载多放在\Think\Think这个类里,异常处理也不例外. 如图,TP在start方法中定义自定义错误和异常处理函数,以及脚本关闭函数.下面来看看各自的源码,在此之前先看一个错误输出函数,这个函数将会在各个处理函数中被调用:static public function halt($error) {. $e = array(); if

2017-02-01 16:30:44 1816

原创 ThinkPHP的钩子实现原理

ThinkPHP中钩子Hook机制的原理钩子是一种触发机制,如同一个陷阱,当程序运行到某个地方时就会触发这个陷阱,然后执行这个Hook,执行完成后,系统根据执行的不同结果继续进行.关于这个理解我第一次是在下面这篇博文上见到的:thinkphp钩子的实现框架在\Think\Think->start()方法中调用Hook类中的import方法批量加载模式行为:默认为\Model\common.php中

2017-02-01 13:01:13 3736

转载 TP框架的目录结构总结

用thinkphp开发了好些项目了;最近准备抽空写一些经验总结; 希望能给刚开始接触tp的童鞋们提供一些开发的方案;少走一些弯路;少踩一些坑; 这些绝对都是些精华干货;耐着性子阅读;相信肯定是会有收获的; 先从thinkphp的目录架构开始吧; koudaigaoxiao ├─Application 项目逻辑目录 │ ├─Common 公共模块 │ │ ├─

2016-09-26 15:31:00 10548

转载 php提示undefined index的几种解决办法

php提示undefined index的几种解决方法 虽然可以通过设置错误显示方式来隐藏这个提示,但是这样也有隐患,就是在服务器的日志中会记录这些提示,导致日志文件异常庞大平时用POST[′′],_POST[''],_GET[”]获取表单中参数时会出现   Notice: Undefined index: --------; 我们经常接收表单POST过来的数据时报Undefined i

2016-08-06 21:32:42 7896

转载 Linux下mysql密码忘记修改办法,解决mysql登陆1045错误

Linux下mysql密码忘记修改办法,解决mysql登陆1045错误服务器在登陆phpmyadmin的时候提示1045错误,然后进入ssh后登陆数据库仍是1045错误。提示如下:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)首先我想到的是进入安全模式进行密码重置,虽没有成功,

2016-07-18 19:03:57 1159

转载 腾讯云服务器linux系统下apache php mysql安装

腾讯云服务器linux系统下apache php mysql安装CentOS系统我们可以直接使用 yum install 的方式进行软件安装,腾讯云有提供软件安装源,是 同步CentOS官方的安装源,包涵的软件都是当前最稳定的版本,因此直接安装即可.一、安装apache php mysqlyum install -y httpd php php-fpm mysql mysql-server p

2016-07-17 09:56:36 6674

原创 腾讯云主机Linux Centos7系统mysql server服务安装记录

腾讯云主机Linux Centos7系统mysql server服务安装记录1.首先,我们检测一下系统中是否已安装mysql的相关服务命令: rpm -qa | grep mysql,无输出则证明未安装 2.然后我们使用yum检测查找系统自带的mysql安装文件。CentOS7的yum源中未找到mysql服务。所以,我们要先下载mysql的repo源.下载命令:wget http://repo.m

2016-07-14 21:28:09 3709

原创 PHP学习(一)

PHP学习(一)cookieCookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据.一般情况下,Cookie通过HTTP headers从服务器端返回到客户端.多数web程序都支持Cookie操作,因为Cookie是存在于HTTP的标头之中,所以必须在其他信息输出以前进行设置,类似于header函数的使用限制. PHP通过setcookie函数进行Cookie的设置,任

2016-07-13 16:22:58 711

原创 MySQL学习(一)

MySQL语句的规范关键子与函数名称全部大写数据库名称、表名称、字段名称全部小写SQL语句必须以分号结尾数据类型整形BITTINYINTBOOL、BOOLEANSMALLINTMEDIUMINTINTINTEGERBIGINT浮点型FLOATDOUBLE日期和时间类型YEAR MySQL以YYYY 格式显示YEAR值,但允许使用字符串或数字为YEAR列分配值

2016-06-22 20:22:34 325

原创 Php的魔术常量

魔术常量PHP向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由于不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。LINE 表示文件中的当前行号。FILE 文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。FUNCTION 函数名称。自PHP5起本常量返回该函数被定义时的名字。CLASS 类的名称。自PHP5起本常量返回

2016-06-12 16:27:17 417

原创 正则表达式

正则表达式 正则表达式是一种字符串搜索和匹配的工具。正则表达式基本语法界定符表示一个正则表达式的开始和结束 /[0-9]/、#[0-9]#、{[0-9]}中的/、#、{ 都可以做界定符。 原子Unicode编码输出的字符单位原子的筛选方式| 匹配两个或多个分支选择[] 匹配方括号中的任意一个原子[^] 匹配除方括号中的原子之外的任意字符原子集合的筛选方式. 匹配除换

2016-06-10 15:35:37 516

原创 Linux磁盘与文件系统管理

文件系统管理文件系统的简单操作磁盘与目录的容量df:列出所有的文件系统的整体磁盘使用量 -a:列出所有的文件系统,包括系统特有的/proc等文件系统-k:以kb的容量显示文件系统-m:以MB的容量显示文件系统-h:以易阅读的方式显示-T:列出该分区的文件系统名称-i:不同硬盘容量以inode的数量来显示du:评估文件系统的磁盘使用量 -a:列出所有的文件与目录的容量-k:以kb的

2016-06-10 15:27:41 615

原创 Html中的form对象

form对象 一个<form>标记,就是一个form对象。form对象的属性name:获取表单的名称,一般给JS使用。method:表单提交方法。 GET方式:数据在地址栏显示,不安全、传递数据量小、不能上传附件。POST方式:相对安全、传递数据大、能上传附件。action:表单数据的处理程序。一般是后端程序文件。enctype:用于POST方式下,表单数据的编码方式。 appl

2016-06-09 15:29:59 3986

原创 PHP项目开发流程

PHP项目开发流程需求分析系统分析系统目标系统功能结构 业务逻辑结构,重点确定开发环境文件夹结构设计数据库设计数据库分析 根据系统分析和系统功能结构,规划出本系统的数据库实体关系E-R图创建数据库和数据表编写数据库连接文件模块化编程开发总结

2016-06-06 20:43:59 2264

原创 Linux的文件与目录管理的bash shell命令

Linux的文件与目录管理的bash shell 命令目录的相关操作cd :切换目录 cd.. :回到上级目录cd ~ :回到自己的主文件夹pwd :显示当前目录 pwd -p :显示出当前的路径,而非使用连接(link)的路径。mkdir :新建一个新的目录rmdir :删除一个空的目录echo :用于显示、打印出ifconfig :用于输出ip信息mv 源文件

2016-06-06 13:17:40 357

原创 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 244

原创 自己学习安卓时的一些繁杂的小笔记

空指针错误 用findViewById获取布局文件里的控件时 需要获取布局文件加载给的那个对象的子方法finadViewId 否则会报空指针错误,即获取不到控件系统返回键处理点击home键时,系统默认只执行应用程序的当前显示的Activity的onStop()方法后跳出界面;点击back键时,系统默认执行应用程序当前的Activity的finish()方法后跳出界面;

2016-06-06 09:25:53 681

原创 linux下的mysql语句命令大全

1.linux下启动mysql的命令:mysqladmin start/ect/init.d/mysql start (前面为mysql的安装路径)2.linux下重启mysql的命令:mysqladmin restart/ect/init.d/mysql restart (前面为mysql的安装路径)    3.linux下关闭mysql的命令:    mysqladmin -u root

2016-06-05 21:15:15 685

原创 在Linux下使用MySQl遇到的小问题集合

问题一在centos下用yum install mysql 安装完后,却发现用service mysqld start无法开启 出现mysqld:unrecognized service 解决办法: 卸载掉mysql 在Terminal输入 yum remove mysql 然后重新安装yum install mysql还是没办法解决 在Terminal下输入rpm -q mysq

2016-06-01 21:53:43 256

Node.js实战 中文版.pdf

Node.js实战 中文版.pdf

2017-07-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除