PHP 程序员的技术成长规划

PHP 程序员的技术成长规划
按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定学习成长目标。 本文按照目前主流技术做了一个基本的梳理,整个是假设PHP程序员不是基础非常扎实的情况进行的设定,并且所有设定都非常具体明确清晰,可能会让人觉得不适,请...

阅读全文>>

阅读全文...

php中的后期静态绑定

php中的后期静态绑定
使用的保留关键字: static 定义: static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用。 self与static的区别: self调用的就是本身代码片段这个类,而static调用的是从堆内存中提取出来,访问的是当前实例化的那个类(即static作用于当前调用的类) 示例一(在静态环境下) ...

阅读全文>>

阅读全文...

PHP 控制和反转

PHP 控制和反转
PHP 很多地方也用到了依赖注入(控制反转),觉得有必要和大家简单聊一聊什么是依赖注入以及怎么使用它。 IoC - Inversion of Control 控制反转 DI - Dependency Injection 依赖注入 依赖注入和控制反转说的实际上是同一个东西,它们是一种设计模式,这种设计模式用来减少程序间的耦合 优势(为什么使用 PHP 的控制和反转) 使用依赖注入,...

阅读全文>>

阅读全文...

PHP中phar包的使用

PHP中phar包的使用
PHP5.3之后支持了类似Java的jar包,名为phar。用来将多个PHP文件打包为一个文件。 首先需要修改php.ini配置将phar的readonly关闭,默认是不能写phar包的,include是默认开启的。 phar.readonly => On 创建一个phar压缩包 <?php $phar = new Phar('swoole.phar'); $pha...

阅读全文>>

阅读全文...

PHP队列SplQueue

PHP队列SplQueue
队列(Queue) 异步并发的服务器里经常使用队列实现生产者消费者模型,解决并发排队问题。PHP的SPL标准库中提供了SplQueue扩展内置的队列数据结构。另外PHP的数组也提供了array_pop和array_shift可以使用数组模拟队列数据结构。 SplQueue $queue = new SplQueue; //入队 $queue->push($data); //出队 $dat...

阅读全文>>

阅读全文...

利用msg_id应对通知业务的去重设计

利用msg_id应对通知业务的去重设计
情景 在许多常见场景如支付回调的消息通知,需保障消息可靠性,实行消息至少传达一次的策略,即通知时根据业务方响应的状态码、返回码、响应时间来判定业务有效性,如未响应正常的业务状态,通知服务应重新通知。 msg_id的应用及生成 中大型厂商在做消息通知时都会附带msg_id参数,以此便于业务方回溯、去重 msg_id生成方法没有明确规定,一般需符合以下特点: ...

阅读全文>>

阅读全文...

php使用redis的有序集合zset实现延迟队列

php使用redis的有序集合zset实现延迟队列
延迟队列就是个带延迟功能的消息队列,相对于普通队列,它可以在指定时间消费掉消息。 延迟队列的应用场景: 1、新用户注册,10分钟后发送邮件或站内信。 2、用户下单后,30分钟未支付,订单自动作废。 我们通过redis的有序集合zset来实现简单的延迟队列,将消息数据序列化,作为zset的value,把消息处理时间作为score,每次通过zRangeByScore获取一条消息进行处理。 ...

阅读全文>>

阅读全文...

记imagepng在lnmp环境中无法输出保存图片问题

记imagepng在lnmp环境中无法输出保存图片问题
在网上查阅了很多资料说: 去除BOOM头 用ob_clearn();清除缓存 以上几个都没用,后来突然想起是不是没有权限生成文件?! 然后ssh登录终端,用chown命令修改目录属主就正常了 = = chown -R www:www ./gd

阅读全文>>

阅读全文...