反射在php 中的应用场景主要是依赖注入的时候,通过控制器在调用函数的时候对于传入参数 class 类名的限制,自动从di容器中取出对应class 的单例类实体,方便我们在使用的时候不需要主动传入。
rabbitmq记录
rabbitmq是一款实现amqp 协议的软件,我们在通过php 使用rabbitmq 的时候有两种方式(类似php 使用redis,一种是通过c扩展的方式,一种是纯php实现的lib 包。其实还有异步引擎,swoole是通过c扩展的方式,workman 是通过php 实现的lib包),一种是安装php 的amqp扩展 http://docs.php.net/manual/da/book.amqp.php,一种是市面上比较流行的库https://github.com/php-amqplib/php-amqplib, 识货内部就是通过简单使用这个库来进行和rabbitmq的交互。
tp源码分析-validate验证器
我们在写接口的时候经常要对传入的参数进行验证,平时供客户端调用的接口还好,一般他们不会乱传什么内容,但也保不准他们的参数是从某个地方获取的,然后误传了,所以我们还是需要做好我们自己的防线,防止后端服务崩溃。还有种情况就是我们开发的后端管理模块,是给运营他们使用的,他们有时候可能配置出错了,这很容易导致我们配置的app比如界面崩溃,所以这块我们的代码一定要严谨。
曾想着看laravel 的验证器咋写的,!!!但真的类封装的太多了,头疼,算了还是看tp的吧,简简单单两个类搞定。
持久化
我们在php-fpm 模式下编写的代码一般是同步阻塞的,很少能实现像redis 或者 node 那种等待监听固定端口的形式(通过daemon 或者 nohup参数让其在后台执行),一般php 想实现同样的方式,都是通过加一个死循环,while (true), 但这种方式有一个缺点就是程序挂掉了不能重写启动,不像php-fpm 或者 swoole 的http server 在对子进程进行管理的时候,当工作进程挂掉之后,会重新拉起一个新进程,怎么办呢?可以通过两个工具 pm2 或者 supervisor 。supervisor 的工作原理就是把管理的进程当做自己的子进程,pm2 原理没有了解过。