Swoole 源码分析——Server 模块之 Worker 事件循环 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区

`swManager_loop` 函数 `manager` 进程管理 `manager` 进程开启的时候,首先要调用 `onManagerStart` 回调 添加信号处理函数 `swSignal_add`,`SIGTERM` 用于结束 `server`,只需要 `running` 设置为 0,`manager` 会逐个杀死 `worker` 进程;`SIGUSR1` 用于重载...
阅读全文

Swoole 源码分析——Server 模块之 Stream 模式 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区

`swReactorThread_dispatch` 发送数据`reactor` 线程会通过 `swReactorThread_dispatch` 发送数据,当采用 `stream` 发送数据的时候,会调用 `swStream_new` 新建 `stream`,利用 `swStream_send` 发送数据。```phpint swReactorThread_dispatch(s...
阅读全文

解锁 Redis 锁的正确姿势 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区

解锁redis锁的正确姿势=============redis是php的好朋友,在php写业务过程中,有时候会使用到锁的概念,同时只能有一个人可以操作某个行为。这个时候我们就要用到锁。锁的方式有好几种,php不能在内存中用锁,不能使用zookeeper加锁,使用数据库做锁又消耗比较大,这个时候我们一般会选用redis做锁机制。setnx=====锁在redis中最简单的数据结...
阅读全文

Laravel 错误日志的插件 (Laravel-log-viewer) | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区

记录错误日志,可以更容易调试问题或者错误。效果](https://lccdn.phphub.org/uploads/images/201704/13/5698/mTq8ZJjuzd.jpg)代码```phphttps://github.com/rap2hpoutre```安装```phpcomposer require rap2hpoutre/lara...
阅读全文

学习开发自己的 Composer 包,并使用 GitHub 实时更新到 Packagist | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区

composer是什么Composer 不是一个包管理器。是的,它涉及 "packages" 和 "libraries",但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。Composer 受到了 node's npm 和 ruby's bundler 的强烈启发。而当时 PHP 下并...
阅读全文

说说 PHP 的魔术方法及其应用 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区

PHP中将所有__(两个下划线)开头的类方法作为魔术方法,这方法之所以称为魔术方法是因为其实现的功能就如变魔术一样感觉很神奇。在特定的事件下触发,这真的很酷。 __construct()这个方法应该是最常用的,被称为构造器或者构造方法,当一个对象被实例化时会被首先调用,而在 PHP 框架中一些过滤器,中间件及依赖注入也一般在这个方法中完成。父类的构造器可以被子类继承和重写。```...
阅读全文

Laravel 中使用路由控制权限 (不限于 Laravel,只是一种思想) | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区

Start权限设计是后台管理很重要的一个功能,所以要好好设计。 PHP 已经有很多这方面的packages了,就不用我们重复造轮子了。当然,如果你愿意可以从头开始 PS以前做权限认证的方式有好几种,我说说常用的两种吧!1. 每一个页面认证当前需要的权限一次2. 在统一的地方(中间件)验证 先上一下简单的表结构(只保留重要的信息)数据库的模型 E...
阅读全文

PHPer 面试指南-PHP 篇 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区

本书的 GitHub 地址:PHP 篇收集了一些常见的基础、进阶面试题,基础的面试题不再作答。 基础篇 Get 和 POST 的区别 Cookie 和 Session 的区别和关系 单引号和双引号的区别 isset 和 empty 的区别 echo、print\_r、print、var\_dump 之间的区别 什么是 MVC? 传值和传引...
阅读全文

PHP 系统架构师成长之路 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区

图片为本人原创自制,部分内容参考Darker's Blog,高清大图,建议: 1)在PC上查看; 2)如果在手机上查看,请点击图片,缩放](http://blog.bestxtech.com/wpcontent/uploads/2017/04/PHP%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E5%B8%88%E6%88%90%E9%95%BF%...
阅读全文

Laravel 简单使用 Redis 作缓存 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区

本地测试 ,先搞个redis,并到文件夹下使用命令 Redisserver redis.conf开启redis服务1. 修改配置文件```phpconfig/cache.php'redis' = [ 'driver' = 'redis', 'connection' = 'default', ], 这里的conn...
阅读全文