
php
Gekkoou
这个作者很懒,什么都没留下…
展开
-
dnmp v2.0
git 项目地址https://github.com/Gekkoou/dnmpdocker + nginx + mysql + php7/5扩展 redis + mongodb + swoole (更多扩展可编辑 .env 文件)使用安装 docker 和 docker-composegit clone 代码到本地$ git clone git@github.com:Gekkoou/dnmp.git执行命令$ cd dnmp$ docker-compose up -d默认站点在浏原创 2020-12-13 18:50:06 · 441 阅读 · 0 评论 -
swoole 学习笔记
写的有点乱, 仅供本人参考官方手册: https://wiki.swoole.com/协程,是为了提高并发的,如果我的应用就没有高并发,或者必须要用某些无法异步化 IO 的操作 (例如上文的 MongoDB),那么你完全可以不开启一键协程化,关闭 enable_coroutine,多开一些 Worker进程,这就是和 Fpm/Apache 是一样的模型了,值得一提的是由于 Swoole 是常驻进程的,即使同步 IO 性能也会有很大提升,实际应用中也有很多公司这样做。PHP-FPM vs Swool.原创 2020-05-22 15:06:26 · 497 阅读 · 0 评论 -
swoole reload 平滑重启小实践
官方参考: https://wiki.swoole.com/#/server/methods?id=reloadreload() 安全地重启所有 Worker/Task 进程。Swoole\Server->reload(bool $only_reload_taskworkrer = false): bool平滑重启只对 onWorkerStart 或 onReceive 等在 Worker 进程中 include/require 的 PHP 文件有效Server 启动前就已经 includ原创 2020-05-13 05:06:12 · 1558 阅读 · 0 评论 -
swoole 并发调用小实践
顺序执行耗时 = 所有任务执行耗时的总和: t1+t2+t3...并发执行耗时 = 所有任务执行耗时的最大值: max(t1, t2, t3, ...)按照 test1.php 正常执行代码, 若 for 里每个调用都需要耗时 2s, 那执行5次下来就需要 10stest2.php 和 test3.php 用 swoole 提供的并发调用功能, 利用 协程(go) + 通道(channel)...原创 2020-04-07 23:42:08 · 665 阅读 · 0 评论 -
约瑟夫问题 php
原题: https://leetcode-cn.com/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/0,1,…,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数...原创 2020-04-02 02:34:27 · 317 阅读 · 0 评论 -
用两个栈来实现一个队列 php
思路:定义一个栈为储存队列 queue, 一个为临时队列 tmp_queue入列: 正常入栈出列: 将 queue 依次 pop 出栈并 push 入栈到 tmp_queue, 根据栈特性 先进后出 然后把 tmp_queue 中 pop 出第一个元素, 最后依次把 tmp_queue 的元素重新入栈回 queue至此实现了队列的性质 先进先出class Queue{ publi...原创 2020-03-27 02:24:37 · 363 阅读 · 1 评论 -
利用链表实现栈和队列 php
栈: http://data.biancheng.net/view/169.html队列: http://data.biancheng.net/view/172.htmlphp链表类: https://blog.youkuaiyun.com/Gekkoou/article/details/105127971栈use LinkedList;class LinkedListStack extend...原创 2020-03-26 22:56:36 · 327 阅读 · 0 评论 -
php实现链表
链表: http://data.biancheng.net/view/160.html双向链表: http://data.biancheng.net/view/166.html双向链表官方类:https://www.php.net/manual/zh/class.spldoublylinkedlist.php链表class Node{ public $data; ...原创 2020-03-26 21:10:10 · 613 阅读 · 0 评论 -
N皇后问题 php
https://leetcode-cn.com/problems/n-queens/回溯函数 backtrack(row = 0)循环列并且试图在每个列 column 中放置皇后在位置 (row, column) 方格上放置皇后排除同行、同列冲突、对角线的位置if 所有的行被考虑过, row == N找到一个解else继续查找下一行皇后的位置 backtrack(r...原创 2020-03-24 23:22:45 · 384 阅读 · 0 评论 -
红包算法 php (随机 & 固定最大金额与最小金额)
网络搜集的3种简易算法随机红包function randNum($total, $num){ $min = 0.01;//每个人最少能收到0.01元 for($i=1; $i<$num; $i++){ $safe_total = ($total-($num-$i)*$min)/($num-$i);//随机安全上限 if($safe_tota...原创 2020-03-24 18:37:53 · 1491 阅读 · 0 评论 -
斐波那契数列 爬楼梯问题 python & php版
https://leetcode-cn.com/problems/climbing-stairs/爬楼梯问题假设你正在爬楼梯, 需要 n 阶你才能到达楼顶每次你可以爬 1 或 2 个台阶, 你有多少种不同的方法可以爬到楼顶呢?设爬 n 个台阶有 f(n) 种可能假设先爬1阶, 剩下 n-1 阶有 f(n-1) 种可能假设先爬2阶, 剩下 n-2 阶有 f(n-2) 种可能因此爬...原创 2020-03-24 18:26:36 · 795 阅读 · 0 评论 -
redis 队列简单实现高并发抢购/秒杀
前提为每人限购1件开抢前把秒杀商品库存存进 Redis 队列中$redis = new redis();$redis->connect('127.0.0.1', 6379);//库存$num = 10;//往队列 goods_store 插入商品, 队列的长度为库存for($i=0;$i<$num;$i++) $redis->lpush('good...原创 2019-03-21 14:34:28 · 7736 阅读 · 1 评论 -
xdebug 配置
环境: windows+phpstudy php5.6官方配置文档: https://xdebug.org/docs/all_settings[xdebug];指定Xdebug扩展文件的绝对路径zend_extension = &quot;D:\phpStudy\php\php-5.6.27-nts\ext\php_xdebug.dll&quot;;指定性能分析信息文件的输出目录xdebug.pro...原创 2019-01-31 10:27:44 · 457 阅读 · 0 评论 -
oppo 推送 php simple demo (oppo-push-php-sdk)
oppo 推送 simple demo只有普通的 全量用户推送 与 registration_id 推送 (别名推送官方屏蔽不许用, 没有离线与定时推送等高级设置功能~)参考文档: http://storepic.oppomobile.com/openplat/resource/201812/03/OPPO推送平台服务端API-V1.3.pdf官方没有提供php版本SKD, 某度某歌搜不到...原创 2019-01-22 17:27:46 · 1754 阅读 · 0 评论 -
linux zephir 编写 php 扩展 (docker篇)
不BB, 直接放代码, p神写的 zephir 快速编译生成5.4~7.2版本下所有扩展的 Dockfile 文件以 php5.6 为例, Dockfile 文件FROM php:5.6LABEL maintainer=&quot;phithon &amp;lt;root@leavesongs.com&amp;gt;&quot;ARG ZEPHIR_VERSION=0.11.1ARG ZEPHIR_PARSER_VER...原创 2018-11-15 11:27:59 · 628 阅读 · 0 评论 -
php将image转换为base64编码
<?php$file = "example.jpg";$type = getimagesize( $file ); //取得图片的大小,类型等$file_content = base64_encode( file_get_contents( $file ) );switch ( $type[2] ) { //判读图片类型 case 1: $img_type = "gi原创 2016-03-21 14:07:57 · 682 阅读 · 0 评论 -
thinkphp 关联模型学习笔记
关联定义ThinkPHP可以很轻松的完成数据表的关联CURD操作,目前支持的关联关系包括下面四种:HAS_ONE、BELONGS_TO、HAS_MANY、MANY_TO_MANY一对一关联 :包括HAS_ONE 和 BELONGS_TO 一对多关联 :包括HAS_MANY 和 BELONGS_TO 多对多关联 :MANY_TO_MANY关联定义的格式是:namespace Home\Model;原创 2016-03-10 22:41:08 · 895 阅读 · 0 评论 -
ucenter 简单分析与同步机制
ucenter采用MVC架构,多数用于同步各个应用中的用户数据,实现用户的一站式注册、登录、退出以及社区其他数据的交互。简单分析index.php入口文件$m = getgpc('m'); //判断加载哪一个Model$a = getgpc('a'); //判断加载哪一个Controlif(empty($m) && empty($a)) { header('Location: admin原创 2016-03-11 17:36:10 · 2264 阅读 · 0 评论 -
FastCgi与PHP-fpm关系
刚开始对这个问题我也挺纠结的,看了《HTTP权威指南》后,感觉清晰了不少。首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者。 web server(比如说nginx)只是内容的分发者。比如,如果请求/index.html,那么web server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。好了,如果现在请求的是/in转载 2016-04-15 21:44:18 · 477 阅读 · 0 评论 -
MyISAM与InnoDB区别
原文地址:http://blog.youkuaiyun.com/xifeijian/article/details/20316775MyISAM 和InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比In转载 2016-04-17 20:43:52 · 446 阅读 · 1 评论 -
RabbitMQ 消息队列 - direct 模式分发消息
推荐阅读 https://blog.youkuaiyun.com/column/details/15500.htmldirect 模式根据 Binding 指定的 Routing Key, 将符合Key的消息发送到 Binding 的 Queuep_direct.php&amp;lt;?php//配置信息$conn_args = array( 'host' =&amp;gt; '...原创 2018-08-14 16:07:39 · 1281 阅读 · 0 评论 -
RabbitMQ 消息队列 - fanout 模式分发消息
推荐阅读 https://blog.youkuaiyun.com/column/details/15500.htmlfanout 模式将同一个 message 发送到所有同该 Exchange 绑定的 queue, 不论 RoutingKey 是什么, 这条消息都会被投递到所有与此 Exchange 绑定的 queue 中p_fanout.php&lt;?php//配...原创 2018-08-14 16:16:03 · 815 阅读 · 0 评论 -
RabbitMQ 消息队列 - topic 模式分发消息
推荐阅读 https://blog.youkuaiyun.com/column/details/15500.htmltopic 模式根据 Binding 指定的 RoutingKey, Exchange 对 key 进行模式匹配后投递到相应的 Queue, 模式匹配时符号 "#" 匹配一个或多个词, 符号 "*" 匹配正好一个词, 而且单词与单词之间必须要用 "." 符号进行分隔...原创 2018-08-14 16:22:57 · 1015 阅读 · 0 评论 -
PHP 输入多个经纬度坐标 找出中心点
参考: https://stackoverflow.com/questions/6671183/calculate-the-center-point-of-multiple-latitude-longitude-coordinate-pairsPython Java C# JavaScript Objective-C PHP 版本均有function GetCenterFromDegree...原创 2018-10-11 10:25:51 · 1589 阅读 · 0 评论 -
linux 编写 php扩展 小实验
环境 Ubuntu 16.04, PHP 5.6php扩展后门小实验git: https://github.com/Gekkoou/php-extension-backdoor利用了 PHP SAPI 的生命周期, 当有请求的时候, 调用一次所有模块的请求初始化函数(PHP_RINIT_FUNCTION), 然后执行POST过来指定参数的命令. 当然这只是简单的用法, 复杂的隐匿性高的可...原创 2018-11-15 19:09:57 · 417 阅读 · 0 评论 -
linux zephir 编写 php 扩展 (入门篇)
Zephir是一种语言, 在语法上跟PHP有很多相似之处, 就算不擅长C/C++的PHP开发人员也可快速上手, 编写PHP扩展.安装方法自行谷歌或百度.初始化执行命令 zephir init test, 成功运行后, 会得到如下的目录结构test/ ext/ test/ext 目录里放的是编译需要用到的代码, 可忽略, 接下来要写的Zephir代码文件要放在 test ...原创 2018-11-14 20:29:31 · 2135 阅读 · 0 评论 -
OAuth 2.0 原理与流程详解
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。本文例子为 在多个不同域名的网站下,使用同一套用户中心体系,点击登录跳转到已搭建 OAuth2.0 的服务端后,用户授权登录。流程: (A)用户访问客户端,后者将前者导向认证服务器。 (B)用户选择是否给予客户端授权。 (C)假设用户给予授权,认证服务器将用户导向客户端事原创 2016-03-17 14:47:33 · 2964 阅读 · 0 评论