摘要:业务逻辑: 正常在 controller 方法的参数中注入某个类,方法中使用这个类时发生内存超出提示。 分析: 过往显示,正常使用依赖注入是不存在问题的,那么很有可能是哪里发生了循环引用,导致一直请求某个操作而消耗内存。 排查: 业务逻辑没有任何问题。 在定义路由时,该路由指定了某个中间件,需要排查
阅读全文
摘要:token 驱动使用 TokenGuard 用传递的值去用户表中查询 member_token 字段的值,看是否有匹配的。 服务端需要在用户表 member_token 字段中存储 access_token。 默认是永久存储,未提供设置过期时间的机制。 passport 驱动是 laravel/pa
阅读全文
摘要:Passport 的 Client 模型对应用户是默认的 User 模型、使用的 guards 是 api。 如果你发现自定义 passport 时总是调试不成功,那么很有可能是以下原因。 /** * Get the user that the client belongs to. * * @ret
阅读全文
摘要:auth:api 在 Laravel 的 Routing , Middleware , API Authentication 主题中都有出现。 一. 在 Routing 部分可以知道 auth:api 是中间件的名字,代表某个中间件实现,使用方式为 Route::middleware('auth:a
阅读全文
摘要:从文档的简单介绍上来讲,有一些抽象。 个人感觉,对于概念上的大多数不理解主要还是来自于 文档不是讲设计思路,而是实际操作。 查看英文文档,通常来说可以给你最准确的直觉,而本地翻译一般比较字面或者带有理解性的。 https://laravel.com/docs/6.x/authentication#i
阅读全文
摘要:PHP 完整生命周期 执行PHP文件 PHP扩展模块初始化(MINIT) PHP扩展请求初始化(RINIT) 执行 PHP 逻辑 PHP扩展请求结束(RSHUTDOWN) PHP脚本清理 PHP扩展模块结束(MSHUTDOWN) 终止PHP PHP 请求生命周期 如果是 cli 执行 PHP 脚本,
阅读全文
摘要:在 Swoole4 中可以使用 channel 实现协程间的通信、依赖管理、协程同步。 简单来说,WaitGroup 就是使用 channel 的机制,让主协程等待所有子协程结束后才退出的功能。 Course http://www.yzmedu.com/learn/8906 Refer Swoole
阅读全文
摘要:这两天,又一全栈式 Swoole 协程框架面世了 - hyperf,实现思路是我内心点了赞同的,就集成现有 PHP 生态优质组件到 Swoole 的协程中来。 有人想到,为什么不是 Swoole 集成到 Web 框架中,当然已经有案例了,如果是老项目这么做是可以通过常驻内存提升性能的,并且利用到 S
阅读全文
摘要:关于 Buffered Query 和 Unbuffered Query:http://www.php.net/manual/zh/mysqlinfo.concepts.buffering.php 对于结果集小的查询,一般就开启 Buffered Query 一次取回(fetchAll); 对于结果
阅读全文
摘要:大家知道 Swoole 提供了方便于服务器、网络编程的模式,简化了多进程编程。 这直接让 PHP 的运行很容易变成常驻内存的 Server 程序,执行效率上有了数倍的提升。 但是这一切还没有让人足够兴奋,直到协程的完整支持,也就是说,可以随时随地并发了。 swoole-4.2.9 及以上,完整支持了
阅读全文
摘要:[ Windows 开发环境 ] phpStudy(http://phpstudy.php.cn/) 现在一般选择版本: php7.1 + nginx,常用 curl、openssl 扩展选择打开。 项目安装依赖包:php C:\phpStudy\PHPTutorial\tools\composer
阅读全文
摘要:使用方式 /** * 如果直接示例化 Request 默认是没有参数的,可以自己传入 * 本方法将 PHP 超全局变量作为参数然后实例化自身(Request)进行初始化。 */ $request = Request::createFromGlobals(); 表面的 Request 对象格式 + 是
阅读全文
摘要:既然涉及到高并发这个概念,就少不了先谈这么几个概念,并发数、多进程、多线程、协程、负载均衡。 操作系统上讲的并发是操作系统上有几个程序在同时执行,单核CPU在微观上是由CPU调度执行,非同时执行,多核CPU在微观上才是真正的并行。 互联网产品的并发通常是指并发连接数,用户同时访问数量,哪些因素能影响
阅读全文
摘要:[ 典型场景 ] 典型的多进程服务器模型是这样的,主进程绑定ip,监听port,fork几个子进程,子进程安装信号处理器,随后轮询资源描述符检查是否可读可写; 子进程的轮询又涉及到 IO复用,accept连接,事件处理 系列操作。 以下用伪码表示这个过程: Master: bind -> liste
阅读全文
摘要:单进程服务器简陋版: <?php /** * Single http server. * * Access http://127.0.0.1:8081 * * @license Apache-2.0 * @author farwish */ $s_socket_uri = 'tcp://0.0.0.
阅读全文
摘要:直接看下面的注释中针对每一个文件的作用说明。 <?php /** * BrowserKit - Make internal requests to your application. * * If you need to make requests to external sites and app
阅读全文
摘要:两点注意项: 1. 占位符 (?) 必须被用在整个值的位置,不需要引号等其它字符。 2. 参数按数组元素顺序依次传递给占位符。 <?php /** * PDO基于占位符的查询预处理 * * @license Apache * @author farwish <farwish(a)foxmail.co
阅读全文
摘要:在web框架的console中,命令不再是直接指定入口文件,如以往 php test.php start,而是类似 php app/console do 的形式。 workerman 对命令的解析是 parseCommand 方法,里面主要是处理 $argv 全局变量。 那么我们只需要在自己的逻辑中
阅读全文
摘要:/** * 全局使用 composer 组件的步骤: * * 1. 建一个包含所有需要全局使用的composer包的项目。 * 如:globalVendor/ * composer init 初始化 * composer install 安装 * * 2. php.ini中指定 auto_prepe
阅读全文
摘要:具体的校验步骤可以自定义,下面是比较直观的一种形式: 1. 客户端:请求参数带上时间,进行首字母排序,连接私钥后,取得加密结果; 客户端请求时带上这个加密结果作为sign参数。 2. 服务端:对sign参数进行校验(过程同上),如果正确且在有效期内,则通过。 示例程序: <?php /** * Si
阅读全文