
PHP
艺术的冬瓜
让优秀成为一种习惯
展开
-
php链路追踪molten
Molten可以认为是phptrace的的升级版,增加了可视化分布式等等等等的功能吧,主要用了phptrace的信息收集这块。功能:molten追踪php核心调用库运行时信息并且按照zipkin/optracing格式输出信息。 可以追踪`curl,pdo,mysqli,redis,mongodb,memcached` 这么多的运行信息。1.运行环境Linux_Alpha2.PHP版本7.23.一些依赖包:apk ad php7-dev libc-dev libcurl curl原创 2021-09-17 18:07:07 · 782 阅读 · 0 评论 -
Xss与Csrf
1.XSS:跨站脚本攻击,Cross-Site Scripting,为了和前端的css避免重名,简称为XSS,是指通过技术手段,向正常用户请求的HTML页面中插入恶意脚本,执行。主要就是通过对用户输入的数据做过滤或者是转义,可以使用框架提供的工具类HtmlUtil。2.CSRF,即 cross site request forgery,跨站请求伪造,可以理解为重放攻击。比较常见的情况是,攻...原创 2020-04-06 21:44:32 · 147 阅读 · 0 评论 -
redis缓存穿透、雪崩原因与解决方案
redis技术就是NoSQL技术中的一种,但是引入redis又有可能出现缓存穿透,缓存击穿,缓存雪崩等问题。本文就对这三种问题进行较深入剖析缓存穿透:key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。 缓存击穿:key对应的数据...原创 2020-04-06 21:29:12 · 199 阅读 · 0 评论 -
redis分布式锁之php
在单进程的系统中,当遇到并发情况下,会出现一些数据异常的问题,但是如果这些数据是需要保证唯一性的话,那我们就希望在同一时刻,只能有一个线程在执行这块代码,通常我们一般都是通过简单的加锁或同步来实现并解决这个问题。但是以上都是单进程多线程的情况,如果出现多进程多线程,显然会出现问题。因为多线程之间是可以共享内存的,但是多进程之间是不行的,所以这个时候需要用到分布式锁。分布式锁常用实现方...原创 2020-04-06 20:41:28 · 223 阅读 · 0 评论 -
Composer原理
Composer作为PHP的包管理工具,为PHPer们提供了丰富的类库1.__autoload:尝试加载未定义的类2.spl_autoload_register:注册给定的函数作为 __autoload 的实现spl_autoload_register(function( $className ){ require $className . '.php';});//或...原创 2020-04-03 12:41:49 · 186 阅读 · 0 评论 -
PHP之PSR规范
PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准。PSR-1 基础编码规范PHP代码文件 必须 以 <?php 或 <?= 标签开始;PHP代码文件 必须 以 不带 BOM 的 UTF-8 编码;PHP代码中 应该 只定义类、函数、常量等声明,或其他会产生 副作用 的操作(如:生成文件...原创 2018-03-08 16:42:59 · 206 阅读 · 0 评论 -
设计模式详解及PHP实现
设计模式(Design Patterns)设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 –百度百科In software engineering, a design pattern is a general reusable solution to a common...原创 2018-03-08 17:40:53 · 329 阅读 · 0 评论 -
依赖注入
/**** 工具类,使用该类来实现自动依赖注入。**/class Ioc { // 获得类的对象实例 public static function getInstance($className) { $paramArr = self::getMethodParams($className); return (new ReflectionClass($clas...原创 2018-03-09 20:36:18 · 237 阅读 · 0 评论 -
php生成xls表格
下载扩展包PHPExcelhttps://github.com/PHPOffice/PHPExcel/tree/1.8/Classesfunction IntToChr($index, $start = 65){ $str = ''; if (floor($index / 26) > 0) { $str .= IntToChr(floor($i...原创 2019-05-10 15:45:47 · 624 阅读 · 0 评论 -
小程序登录流程
客户端参数:code|data|ivcode->http->openid|session_key:https://api.weixin.qq.com/sns/jscode2session参数:appid,secret,js_code,grant_typesession_key|data|id->decryptData(解密)->用户基本信息/** * ...原创 2019-05-10 16:25:41 · 170 阅读 · 0 评论 -
进程监控工具supervisor
守护进程(Daemon)是一种运行在后台的特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。监控服务器的主要后台进程,并在出现问题是自动重启。使用原因1、它是微软官方文档推荐的,降低学习成本。2、它并不一定是最好的,但一定是文档最全的。supervisord是supervisor的服务端程序。supervisorctl就是client的客户程序。安装supervisor-...原创 2018-03-08 14:32:41 · 473 阅读 · 0 评论 -
mysql之mysqlnd
MYSQL:This extension is deprecated as of PHP 5.5.0, and has been removed as of PHP 7.0.0. MYSQLI: MySQL Improved Extension MySQLND: MySQL Native Drive PDO:The PHP Data Objects。extension defines原创 2018-01-05 20:53:21 · 364 阅读 · 0 评论 -
PHP规范
代码规范1.文件1.1 文件命名C和M(控制器和模型)首字母必须大写,遵守驼峰格式,例如:UserBankController.php1.2 文件格式所有文件必须是UTF-8不带BOM1.3 文件内容PHP文件第一行必须是'';2.代码2.1 类名首字母必须大写,遵守驼峰格式,例如:UserBankContro原创 2017-12-15 19:35:43 · 406 阅读 · 0 评论 -
PHP常用算法
1.写一个排序算法,可以是冒泡排序或者是快速排序,假设待排序对象是一个维数组。//冒泡排序(数组排序)function bubble_sort($array){$count = count($array);if ($count 0) return false;for ($i = 0; $i $count; $i++) {for ($j = $count - 1; $j > $i; $j原创 2017-12-15 19:39:14 · 237 阅读 · 0 评论 -
php opcache的配置
原理:其实非常简单,opcache只是把把PHP执行后的数据(opcode)缓存到内存中从而避免重复的编译过程,能够直接使用缓冲区已编译的opcode代码从而提高速度,降低服务器负载效果:在实际应用当中能使QPS数大致增加3倍以上注意:启用opcache后,典型的问题就是由于opcache的缓存加速机制导致的代码变更后无法立即看到效果。php代码被转换成可立即执行的“机器码”后原创 2017-12-15 19:42:38 · 2300 阅读 · 0 评论 -
php性能分析工具xhprof
wget http://pecl.php.net/get/xhprof-0.9.4.tgz tar -zxvf xhprof-0.9.4.tgz cd xhprof-0.9.4 cd extension/ phpize ./configuremake && make install、增加配置php.ini[xhprof]extension=xhprof.soxhprof.原创 2017-12-15 19:55:23 · 289 阅读 · 0 评论 -
php-fpm 性能最大化
PHP-FPM是一个PHPFastCGI管理器,FPM (FastCGI Process Manager)是一个PHP的进程管理器,包含 master 进程和 worker 进程两种进程:master 进程只有一个,负责监听端口,接收来自 Web Server 的请求,而 worker 进程则一般有多个PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载P原创 2017-12-15 19:49:22 · 1276 阅读 · 0 评论 -
json知识普
从结构上看,所有的数据最终都可以分成三种类型: 第一种类型是scalar(标量),也就是一个单独的string(字符串)或数字(numbers),比如“北京”这个单独的词。 第二种类型是sequence(序列),也就是若干个相关的数据按照一定顺序并列在一起,又叫做array(数组)或List(列表),比如“北京,东京”。 第三种类型是mapping(映射),也就是一个名/值对(Name原创 2017-12-16 14:34:59 · 162 阅读 · 0 评论 -
AES密钥与RSA密钥
AES密钥是什么高级加密标准(英语:Advanced Encryption Standard,缩写:AES),是目前对称密钥加密中比较通用的一种加密方式。AES密钥有什么用支付宝开放平台所有OpenAPI均支持对接口的请求内容和响应内容进行AES加密,部分OpenAPI强制要求AES加密。加密后,在网络上传输的接口报文内容将会由明文内容变为密文内容,可以大大提升接口内容传输原创 2017-12-16 14:36:35 · 16847 阅读 · 0 评论 -
微信与QQ授权登录
一、微信授权1.授权页面跳转至微信授权地址https://open.weixin.qq.com/connect/oauth2/authorize?appid=WX_APP_ID&redirect_uri=$callback&response_type=code&scope=snsapi_base&state=state&#wechat_redirect2.静默授权成功后,自动跳转至回调原创 2017-12-16 17:29:42 · 7926 阅读 · 0 评论 -
编译好的PHP环境中安装PHP扩展模块
进入php源码包中,找到需要安装的扩展模块目录。/usr/local/php/bin/phpize./configure --with-php-config=/usr/local/bin/php-configmake && make install原创 2018-01-05 20:40:15 · 498 阅读 · 0 评论 -
PHP规范
代码规范1.文件1.1 文件命名C和M(控制器和模型)首字母必须大写,遵守驼峰格式,例如:UserBankController.php1.2 文件格式所有文件必须是UTF-8不带BOM1.3 文件内容PHP文件第一行必须是'<?php' ,尾部可以不写'?>';2.代码2.1 类名首字母必须大写,遵守驼峰格式,例如:UserBankController2.2 方法名首字母必须小写,遵守...原创 2018-03-08 14:33:03 · 633 阅读 · 0 评论