PHP
GoverChan
活在当下~
展开
-
6种PHP加密解密
<?php function encryptDecrypt($key, $string, $decrypt){ if($decrypt){ $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "12"); return $decrypted; .原创 2021-11-10 14:14:24 · 461 阅读 · 0 评论 -
php反射最佳实践
<?phpclass Foo{ // 类常量 const CLASS_NAME = "Foo"; // 成员属性 public $name; protected $sex = "female"; private $age; // 类静态属性 // php 的对象是可以访问类的 static 属性的 // 但应该使用类的方式访问更为规范 // const 属性只能通过类的方式访问 public stat.原创 2021-08-17 11:38:30 · 97 阅读 · 0 评论 -
PHP新的垃圾回收机制:Zend GC详解
PHP 新的垃圾回收机制: Zend GC 详解概述在 5.2 及更早版本的 PHP 中,没有专门的垃圾回收器 GC(Garbage Collection),引擎在判断一个变量空间是否能够被释放的时候是依据这个变量的 zval 的 refcount 的值,如果 refcount 为 0,那么变量的空间可以被释放,否则就不释放,这是一种非常简单的 GC 实现。然而在这种简单的 GC 实现方案中,出现了意想不到的变量内存泄漏情况(Bug:http://bugs.php.net/bug.php?...转载 2020-07-20 17:05:07 · 270 阅读 · 1 评论 -
CodingLabs - PHP Extension 开发基础
PHP 是当前应用非常广泛的一门语言,从国外的 Facebook、Twitter 到国内的淘宝、腾讯、百度再到互联网上林林总总的各种大中小型网站都能见到它的身影。PHP 的成功,应该说很大程度上依赖于其开放的扩展 API 机制和丰富的扩展组件(PHP Extension),正是这些扩展组件使得 PHP 从各种数据库操作到 XML、JSON、加密、文件处理、图形处理、Socket 等领域无所不能。有时候开发人员可能需要开发自己的 PHP 扩展,当前 PHP5 的扩展机制是基于 Zend API 的,Zend转载 2020-05-28 16:18:52 · 284 阅读 · 0 评论 -
php引用循环陷阱分析说明
原创 2020-05-25 14:31:16 · 222 阅读 · 0 评论 -
PHP反射类基本应用
<?php/** * Created by PhpStorm. * User: Gover_chan * Date: 2020/1/19 * Time: 15:28 */namespace Extend;use ReflectionClass;/** * Class User * @package Extend * @author :Gover_chan *...原创 2020-01-19 15:46:42 · 210 阅读 · 0 评论 -
PHP 编写基本的 Socket 程序
告诫年轻人#空想是没有用的,个人的能力来源于每一天的努力,而不是一步登天,不要畏惧任何新的知识,水滴石穿,总有一天会柳暗花明。我的目的#因为在以后的学习中,我可能会用到网络方面的内容,但同时很多写 PHP 的 coder 都没写过 socket 程序,但是肯定听说过它,也肯定听说过网络编程这个词,所以为了今后的学习,我打算在这里先简单的讲解下相关知识,本篇博文自带实例程序,...转载 2019-12-29 22:39:06 · 178 阅读 · 0 评论 -
PHP技术栈思维脑图(收藏)
原创 2019-12-29 22:35:39 · 1474 阅读 · 1 评论 -
教你使用 Swoole-Tracker 秒级定位 PHP 卡死问题 -
PHPer 肯定收到过这样的投诉:小菊花一直在转!你们网站怎么这么卡!当我们线上业务遇到这种卡住 (阻塞) 的情况,大部分 PHPer 会两眼一抹黑,随后想起那句名言:性能瓶颈都在数据库然后把锅甩给 DBA,赶紧找找慢 sql,但这是非常错误的做法,因为有太多因素能导致业务卡住,下面列举几种常见的卡住问题。1. 死循环最常见的就是写出了死循环代码<?phpwhile(1...转载 2019-12-18 10:26:18 · 756 阅读 · 0 评论 -
在PHP中使用协程实现多任务调度
在 PHP 中使用协程实现多任务调度 | 风雪之隅PHP5.5 一个比较好的新功能是加入了对迭代生成器和协程的支持. 对于生成器, PHP 的文档和各种其他的博客文章已经有了非常详细的讲解. 协程相对受到的关注就少了, 因为协程虽然有很强大的功能但相对比较复杂, ......英文原文地址:Cooperative multitasking using coroutines (in PHP...转载 2019-12-15 16:10:08 · 277 阅读 · 0 评论 -
PHP yield 分析(详细)
PHP yield 分析参考资料http://www.laruence.com/2015/05/28/3038.html http://php.net/manual/zh/class.generator.php http://www.cnblogs.com/whoamme/p/5039533.html http://php.net/manual/zh/class.iterator....原创 2019-12-15 15:43:07 · 780 阅读 · 0 评论 -
.htaccessc常用配置
使用过得配置://隐藏index.php <IfModule mod_rewrite.c>RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] //假如提示:No input f...原创 2015-07-21 11:01:03 · 388 阅读 · 0 评论 -
视频分片的两种方式
MP4只是个封装格式而已。MP4可以有两种方式存在:一种是将Meta全部放在文件头,后面所有的媒体数据为一个整体。这样虽然在流化后也能做到边缓冲边播放,但由于MP4的Meta体积较大,所以在播放之前可能会出现较长缓冲时间(特别是视频时间很长的情况下)。另一种是在一个MP4内封装多段媒体数据,并且每一段媒体数据都有自己独立的Meta,这样就可实现渐进式下载+快速缓冲的效果,Youtu原创 2018-04-17 11:59:42 · 7738 阅读 · 1 评论 -
limit大数据时的性能优化
1. 直接用limit start, count分页语句, 也是我程序中用的方法:select * from product limit start, count当起始页较小时,查询没有性能问题,我们分别看下从10, 100, 1000, 10000开始分页的执行时间(每页取20条), 如下:select * from product limit 10, 20 0.01原创 2018-03-29 14:54:04 · 946 阅读 · 0 评论 -
session挟持原理
XSS危害——session劫持在跨站脚本攻击XSS中简单介绍了XSS的原理及一个利用XSS盗取存在cookie中用户名和密码的小例子,有些同学看了后会说这有什么大不了的,哪里有人会明文往cookie里存用户名和密码。今天我们就介绍一种危害更大的XSS——session劫持。神马是session想明白session劫持及其危害,首先要搞清楚什么是session,熟悉http的同学知道,http是无...原创 2018-03-29 16:25:38 · 643 阅读 · 1 评论 -
phpQuery 和 simple_html_dom对比
phpQuery和simple_html_dom都是非常优秀的DOM解析器。phpQuery主要使用方法,更多方法查看http://code.google.com/p/phpquery/1.加载文档的几种方式123456//$html为内容字符串,$contentType为文档类型,如果不指定则默认以text/html in utf-8类型加载。phpQuery::newDocument($htm...原创 2018-04-18 17:17:43 · 626 阅读 · 0 评论 -
parse_str与http_build_query的使用
//parse_str与http_build_query的使用 //使用parse_str将url字符串转变为key=>value的数组 $str = "tn=monline_dg&ie=utf-8&bs=httpbuildurl&f=3&rsv_bp=1&wd=php+buildquery&rsv_sug3=17&rsv_sug4=330&rsv_sug1=16&oq=php原创 2018-04-18 23:34:18 · 245 阅读 · 0 评论 -
抢购/秒杀常规思路案例
抢购、秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存来处理抢购,避免直接操作数据库,例如使用Redis。重点在于第二个问题常规写法:查询出对应商品的库存,看是否大于0,然后执行生成订单等操作,但是在判断库存是否大于0处,如果在高并发下就原创 2018-04-09 17:44:52 · 1202 阅读 · 0 评论 -
php操作redis实例
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis支持的数据类型有 Stirng(字符串), List(列表), Hash(字典), Set(集合), Sorted Set(有序集合);redis版本是Redis 2.6.12 系统是在Windows+Apache2.4+php5.6连接:1 ...原创 2018-04-09 14:30:01 · 413 阅读 · 0 评论 -
php redis 操作手册
String 类型操作string是redis最基本的类型,而且string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象$redis->set('key','TK');$redis->set('number','1');$redis->setex('key',5,'TK'); //设置有效期为5秒的键值$redis-&g...原创 2018-04-09 14:28:54 · 445 阅读 · 0 评论 -
秒杀抢购场景所会遇到的一些问题
一、大规模并发带来的挑战在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战。如果Web系统不做针对性的优化,会轻而易举地陷入到异常状态。我们现在一起来讨论下,优化的思路和方法哈。1. 请求接口的合理设计 一个秒杀或者抢购页面,通常分为2个部分,一个是静态的HTML等内容,另一个就是参与秒杀的Web后台请求接口。通常静态HTML等内容,是通过CD...原创 2018-04-09 14:12:33 · 1811 阅读 · 0 评论 -
并发场景中,乐观锁/悲观锁,文件排它锁的一些概念
涉及抢购、秒杀、抽奖、抢票等活动时,为了避免超卖,那么库存数量是有限的,但是如果同时下单人数超过了库存数量,就会导致商品超卖问题。那么我们怎么来解决这个问题呢,解决这个问题比较流行的思路我总结了下:1. 用额外的单进程处理一个队列,下单请求放到队列里,一个个处理,就不会有并发的问题了,但是要额外的开启后台进程以及延迟问题,这里暂不予考虑。这里我可使用消息队列,我们常用到Memcac原创 2018-04-09 14:03:24 · 240 阅读 · 0 评论 -
thinkphp配置rewrite模式访问时不生效
使用thinkphp配置rewire模式的路径访问网站时, RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]出原创 2018-03-22 10:45:01 · 1703 阅读 · 0 评论 -
php的call_user_func_array()使用场景
1..动态调用普通函数时,比如参数和调用方法名称不确定的时候很好用[php] view plain copyfunction sayEnglish($fName, $content) { echo 'I am ' . $content; } function sayChinese($fName, $content, $country) { echo $content ....原创 2018-03-21 10:15:13 · 466 阅读 · 0 评论 -
自己收集/编写的方法
//防盗链function check_stop_link(){ $url = $_SERVER["HTTP_REFERER"]; $domain = reset(explode("/", str_replace("http://", "", $url))); $tmp = explode('.', __HOME__);//__HOME__->服务器域名 if (原创 2016-01-26 15:55:15 · 399 阅读 · 0 评论 -
php 生成唯一订单号4种方法
php生成唯一订单号的方法第一种$danhao = date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);第二种$danhao = date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);...原创 2017-07-29 17:00:52 · 27578 阅读 · 1 评论 -
PHP程序员的技术成长规划
第1阶段:初级PHP程序员重点:把LNMP搞熟练(核心是安装配置基本操作)目标:能够完成基本的LNMP环境安装,简单配置维护;能够做基本的简单系统的PHP开发;能够在PHP中型系统中支持某个PHP功能模块的开发。时间:完成本阶段的时间因人而异,有的成长快半年一年就过了,成长慢的两三年也有。1.Linux:基本命令、操作、启动、基本服务配置(包括rpm安装文件,各种服务配置等);会写简单的shell...原创 2017-04-29 16:09:42 · 571 阅读 · 0 评论 -
php采集https-关键代码
只需要再curl采集的时候,追加以下配置项curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);原创 2018-05-05 09:31:17 · 1289 阅读 · 0 评论 -
http,tcp,udp,socket之间的区别
HTTP、TCP、UDP以及SOCKET之间的区别/联系一.TCP/IP代表传输控制协议/网际协议,指的是一系列协组。 可分为四个层次:数据链路层、网络层、传输层和应用层。在网络层:有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层:中有TCP协议与UDP协议。在应用层:有FTP、HTTP、TELNET、SMTP、DNS等协议。 TCP和UDP使用IP协议从一个网...原创 2018-07-03 10:34:09 · 180 阅读 · 0 评论 -
nginx 内置变量
$args #请求中的参数值$query_string #同 $args$arg_NAME #GET请求中NAME的值$is_args #如果请求中有参数,值为"?",否则为空字符串$uri #请求中的当前URI(不带请求参数,参...原创 2018-07-03 14:53:34 · 218 阅读 · 0 评论 -
memcache基本用法
//php操作memcache的使用测试总结--学习 //1 Memcache::connect; //$memcache = new Memcache; //$memcache->connect('127.0.0.1',11211) or die("链接失败!"); //2 Memcache::pconnect; 长链接 //$memcache = new Memcache;...原创 2016-01-04 10:52:00 · 489 阅读 · 0 评论 -
PHP 的垃圾回收机制
垃圾回收,简称 gc。顾名思义,就是废物重利用的意思。再说这个之前先接触一下内存泄露,大概意思就是申请了一块地儿拉了会儿屎,拉完后不收拾,那么那块儿地就算是糟蹋了,地越用越少,最后一地全是屎。说到底一句,用了记得还。一定程度上说,垃圾回收机制就是用来擦屁股的。如果用过 C 语言,那么申请内存的方式是 malloc 或者是 calloc,然后你用完这个内存后,一定不要忘了用 free 函数去释放掉,...原创 2019-10-11 15:06:02 · 344 阅读 · 0 评论 -
Linux的php-fpm优化心得-php-fpm进程占用内存大和不释放内存问题
最近发现博客的内存老是隔三差五地被“吃掉”了,登录到后台后偶尔会出卡顿的情况,一开始怀疑是Swap不够导致的,于是给VPS主机增加了几个G的Swap,观察了一段时间后发现再大的Swap也被慢慢地“吃掉”了!很显然是PHP某些服务一直在占用着VPS的内存没有释放,导致物理内存耗尽后调用了Swap,显然Swap没有物理内存运行的效率高,于是就出现了进程卡死的情况了。考虑到挖站否现在用的Wor...转载 2019-05-07 20:02:29 · 649 阅读 · 0 评论 -
Linux系统监控命令整理汇总-掌握CPU,内存,磁盘IO等找出性能瓶颈
的性能有问题,总之,每到晚上挖站否的主机就出现了不稳定的情况,系统负载忽高忽低。利用服务器日志分析利器:ngxtop和GoAccess也能查出有一些IP一直在不断地扫描服务器端口还有WP后台。但是,最让人不解的是,我自己在进入WP后台后然后用浏览器同时打开十几个页面,用Top命令实时跟踪VPS系统负载,发现负载呈直线上升,由原来的零点几直接上升到3以上。接着,就会发现网站访问变慢和响应延迟了。...转载 2019-05-07 20:01:23 · 2394 阅读 · 0 评论 -
php-fpm进程数管理
php-fpm进程数管理PHP-FPM先来了解一些名词概念:CGI是Common Gateway Interface(通用网管协议),用于让交互程序和Web服务器通信的协议。它负责处理URL的请求,启动一个进程,将客户端发送的数据作为输入,由Web服务器收集程序的输出并加上合适的头部,再发送回客户端。FastCGI是基于CGI的增强版本的协议,不同于创建新的进程来服务请求,使用持续...转载 2019-05-07 20:00:04 · 886 阅读 · 0 评论 -
PHP的反射类ReflectionClass、ReflectionMethod使用实例
PHP5 具有完整的反射API,添加对类、接口、函数、方法和扩展进行反向工程的能力。反射是什么?它是指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。这种动态获取的信息以及动态调用对象的方法的功能称为反射API。反射是操纵面向对象范型中元模型的API,其功能十分强大,可帮助我们构建复杂,可扩展的应用。其用途如:自动加载插件,自动生成文...转载 2019-05-06 14:08:38 · 340 阅读 · 0 评论 -
在 PHP 中使用 `yield` 来做内存优化
1. 什么是 "yield"生成器函数看上去就像一个普通函数, 除了不是返回一个值之外, 生成器会根据需求产生更多的值。来看以下的例子:function getValues() { yield 'value';}// 输出字符串 "value"echo getValues();当然, 这不是他生效的方式, 前面的例子会给你一个致命的错误: 类生成器的对...转载 2019-03-25 10:30:23 · 185 阅读 · 0 评论 -
php5.4.0新特性,trait的优先级分析
结论:同样的方法名,当前类的trait,比继承过来方法,优先级高。比当前类里的方法优先级低。 实践过程如下(省略静态方法的实践)实践代码1:trait trait1{ public function fun1(){ echo 'trait1'; }}class base { use trait1; public functi...原创 2018-10-12 11:48:31 · 466 阅读 · 0 评论 -
JetBrains 系列软件汉化包(转)
关键字: Android Studio 3.0-3.1.3 汉化包 CLion 2018.1-2018.2 汉化包 GoLand 2017.3.2-2018.2 汉化包 IntelliJ IDEA 2017.3-2018.2 汉化包 PhpStorm 2017.3-2018.2 汉化包 PyCharm 2017.3-2018.2 汉化包 RubyMine 2017.3.2-2018....转载 2018-09-20 17:52:33 · 651 阅读 · 0 评论 -
Phpstorm 配置 Xdebug 断点调试教程
xdebug配置详解https://blog.csdn.net/qq_15766181/article/details/82789963 有时候想分析一个开源项目的代码,或者接手了别人的代码,想了解项目代码架构,如果能够在 IDE 中跟踪程序运行轨迹也许可以让你事半功倍。 PhpStorm 提供了强大的调试功能,这篇教程会教大家如何安装配置 xdebug,最终实现能够在浏览器实际运行...原创 2018-09-20 16:45:41 · 7118 阅读 · 2 评论