PHP相关
Gavin_new
一个在技术领域逐渐成长的孩子....
展开
-
php识别“中文文件名”文件报错问题
问题的发现:程序员都拥有懒惰的智慧才智,今天我就在Wampserver上运行了下一个php程序,目的是批量处理文件的文件名,但是中途却出现了一个很奇怪的错误,如下: (1)我在php文件所在目录,手动创建了文件名为“测试.txt”和“test.txt”的文件; (2)在PHP代码中敲入如下代码:<?php var_dump(file_exits("测试.txt")); var_d原创 2016-11-21 10:35:30 · 4866 阅读 · 0 评论 -
PHP类文件的动态加载(静态引入文件的坑)
在写一个开源框架,忽然发现php在多进程时执行的逻辑出现异常,导致子进程无法执行信号处理函数。经过一系列debug,发现php文件的静态引入造成了bug的发生,而使用动态加载类文件将会有效的解决这个bug,具体代码如下:<?phpdefine("TOP_AUTOLOADER_PATH", dirname(__FILE__));class Autoloader{ /** * 类库自动原创 2017-05-09 20:46:55 · 5615 阅读 · 0 评论 -
PHP session回收机制【转】
由于PHP的工作机制,它并没有一个daemon线程,来定时地扫描session信息并判断其是否失效。当一个有效请求发生时,PHP会根据全局变量 session.gc_probability/session.gc_divisor(同样可以通过php.ini或者ini_set()函数来修改) 的值,来决定是否启动一个GC(Garbage Collector)。默认情况下,session.gc_proba转载 2017-06-01 20:10:56 · 669 阅读 · 0 评论 -
XSS攻击以及PHP预防
XSS又称CSS,全称Cross SiteScript(跨站脚本攻击), XSS攻击类似于SQL注入攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如,盗取用户Cookie信息、破坏页面结构、重定向到其它网站等。原创 2017-06-01 20:25:40 · 642 阅读 · 0 评论 -
PHP中的后期静态绑定(Late Static Bindings )
今天看laravel框架源码时,发现一个”static::”这样的语法,非常好奇(本人没经过系统培训,勿喷基础知识不行),于是就上php.net查了一下,原来设施一个php5.3版本新增的静态绑定的语法, 好了,不废话,开始做笔记。class A{ public static function func1(){ echo __CLASS__.PHP_EOL; }原创 2016-10-17 20:44:21 · 1044 阅读 · 0 评论 -
【转-来自鸟哥】关于 PHP 的编译和执行分离
这是来自 @雪候鸟 博客的文章,内容如下: 关于让”PHP的编译和执行分离”这个问题, 一直有人提, 也一直有人尝试. 提的人认为编译执行分离以后, 可以得到性能提升, 可以做代码保护等.我本身并不是对这个特性很感冒, 因为这里面存在一个投入产出比. 让我来给大家解释一下, 然而不管怎么样, 在最后我会给大家提供一种方案来实现这个功能.1. PHP的编译并不是很耗时我之前的文章也介绍过, PHP转载 2017-06-07 10:52:50 · 1428 阅读 · 0 评论 -
PHP的错误笔记
运行期间报错: 1. deprecated:不推荐、不建议异常,如使用了过时的函数; 2. notice:语法存在不当异常,如使用了未定义变量; 3. warining:语法中出现很不适当的异常,如函数参数比匹配造成达不到预期结果; 4. fetal error: 致命错误,直接导致脚本流程终结;编译期间报错: 1. prase error:编译时遇到语法错误;修改报错级别: 1: p原创 2017-06-11 15:00:50 · 390 阅读 · 0 评论 -
PHP防SQL注入记录
mysql注入历来是php的一个问题,目前主要有以下几种方案: (1)addslashes函数 (2)mysql_escape_string 和mysql_real_escape_string 函数(将被废弃或已被废弃) (3)magic_quotes_gpc自动过滤输入(由于效率问题,5.4以后已被强制关闭,无法开启) (4)使用pdo/mysql驱动查询,消除注入看了网上的几篇博文,大致原创 2017-06-05 12:18:59 · 611 阅读 · 0 评论 -
mysql在多进程下出现断开连接(MySQL server has gone away错误)笔记
今天进行文件迁移,主进程负责查数据库,并创建多个子任务,而子任务以进程的方式异步执行,如图所示: 但是,随后发现程序开始后不就,主进程在查询数据库时,报MySQL server has gone away 错误;查了下资料,发现在创建子进程时,父子进程共享同一个socket资源,虽然进程表中有两份socket描述符,但实际上在内核里映射的是同一个socket资源链接,如图:再看下上图中的程序,当任...原创 2018-03-09 16:14:47 · 2305 阅读 · 0 评论 -
发布一个轻量级的PHP实现的WEBSOKCET引擎-EZ_WS
利用零散的时间,用php这门语言写了个轻量级的WebSocket引擎-EZ_WS,期间也在这世界上最好的语言上踩过几个坑,不过坑踩过了,东西也出来了,现分享给大家;GitHub网址:https://github.com/GavinLiu168/ez_ws以下是说明文档EZ_WS是easy-websocket的意思,旨在提供一个websocket的php版本引擎,让php开发人员更加快速的使用webs原创 2017-05-11 11:55:54 · 2244 阅读 · 1 评论 -
国内composer源(解决composer慢的方法)
https://pkg.phpcomposer.com/原创 2017-04-16 16:31:11 · 1167 阅读 · 0 评论 -
PHP进程之信号捕捉中的declare(ticks=1)
在使用PHP的PCNTL拓展时,发现在信号捕捉的例程中出现了declare(ticks=1)这条php语句,于是对其进行研究。一. 语句在php中的意义php中,declare(ticks=n)和register_tick_function(‘handel_function’)一般是配合使用的,其作用是在zend解释器每执行 N 条可计时的低级语句就会发生的事件,该事件发生后就可以处理已经注册的函数原创 2017-03-24 12:01:34 · 2866 阅读 · 0 评论 -
PHP的EXCEPTION,ERROR和THROWABLE
●PHP中将代码自身异常(一般是环境或者语法非法所致)称作错误Error,将运行中出现的逻辑错误称为异常Exception。 ●错误是没法通过代码处理的,而异常则可以通过try..catch来处理; ●PHP7中出现了Throwable接口,该接口由Error和Exception实现,用户不能直接实现Throwable接口,而只能通过继承Exception来实现接口;**题外话: 在larav原创 2016-11-15 19:54:29 · 5327 阅读 · 0 评论 -
php协程(Coroutine)学习笔记
PHP5.5中加入了一个新特性—迭代生成器和协程。一. 什么是协程(Coroutine)?在协程出现之前,要实现多任务并发,在无OS(操作系统)时代,可以使用状态机的思想对多任务进行拆解,在单进程环境中运行多任务,但是这种模式下需要开发者对每个任务有清晰的了解,也要开发者自行开发与任务相关功能(如任务间的通讯)。后来出现了OS(操作系统),咱们就开始使用OS提供的进程和线程功能来轻易实现多任务了。在原创 2017-01-18 18:11:24 · 6943 阅读 · 0 评论 -
PHP---socket应用学习
在看了一下php版的socket-api后,发现php和c语言果然是亲源关系,其socket函数名都有很多相似之处,好了,开始学习。创建socket资源/** * Socket协议:domain => AF_INET(ipv4) AF_INET6(ipv6) AF_UNIX(本地进程间通讯)* Socket类型:type => SOCK_STREAM(顺序全双工字节流,TCP) SOCK_D原创 2016-12-20 19:24:27 · 1015 阅读 · 0 评论 -
PHP---引用使用foreach(xxx as &$x)时候的坑。
注意如下一段代码:$data1 = ["1","2","3"];$data2 = ["4","5","6"];$all = 0;foreach($data1 as &$x){ $all += $x}#注意这里$x是$data1最后一个元素的引用$all2 = 0;foreach($data2 as $x=>$y){ $all2 += ($y+$data1[$x]); //原创 2016-12-15 11:21:59 · 5104 阅读 · 0 评论 -
PHP中的__autoload()和spl_autoload_register()笔记
在看框架源码时,发现了__autoload和apl_autoload_register这两个函数,于是对其进行了一番学习。php的__autoload函数是一个魔术函数,在这个函数出现之前,如果一个php文件里引用了100个对象,那么这个文件就需要使用include或require引进100个类文件,这将导致该php文件无比庞大。于是就有了这个 __autoload函数。__autoload函数在什原创 2016-10-13 12:12:51 · 6867 阅读 · 5 评论 -
PHP自增(++)中的一些奇葩问题研究记录
PHP自增(++)中的一些奇葩问题研究记录最近,从一篇博文中看到php中一个比较奇葩的问题,于是就在自己的博客中做一下记录,原文的网址如下:[PHP一个诡异的加法算法的研究](http://www.phpchina.com/portal.php?mod=view&aid=40040)首先呢,我们先来看一个简单的PHP问题:<?php $a = 1; echo (++$a)+(+原创 2016-06-30 18:48:15 · 741 阅读 · 0 评论 -
PHP7新特性 简要笔记
PHP7除了在解析方面做了深度优化之外,还在语法用法上有了新功能新特性,参考PHP手册,做了简要笔记;1.指定标量类型(指定函数参数类型)<?php// Coercive modefunction sumOfInts(int ...$ints) //省略号代表传入多个参数并存储在ints容器中{ return array_sum($ints);}var_dump(sumOfInts(原创 2017-03-03 17:24:22 · 466 阅读 · 0 评论 -
PHP之pthread拓展使用以及坑
PHP是为WEB开发而生,但是以前PHP是没有线程的说法,直到pthread的出现。 资料来源:http://php.net/manual/zh/book.pthreads.php一. 线程的创建和使用1. Thread类基本的创建和使用:<?php//通过继承Thread类来实现自己的线程类MyThreadclass MyThread extends Thread{ //重写构造函数原创 2017-03-23 15:24:59 · 12615 阅读 · 0 评论 -
php-fpm生产环境下的调试strace
以前,在对php进行性能问题分析时,主要是依赖xhprof对php性能瓶颈进行分析,而这需要侵入代码。今天遇到了需要在生产环境下找出fpm问题的需求,这种情况下,在网上查找了下方案,发现了strace工具。strace是个功能强大的Linux调试分析诊断工具,可用于跟踪程序执行时进程系统调用(system call)和所接收的信号,尤其是针对源码不可读或源码无法再编译的程序。指令用法:strace...原创 2018-04-14 16:41:17 · 2242 阅读 · 0 评论