分类: PHP

共 26 篇
实战 PHP
PHP 利用 Redis Sorted Set的延时队列

延迟队列是我们在业务中经常遇到的场景,例如订单过期,定时发布,定时推送等等。 在 Zset里面,每一个成员都有一个所谓的分数:score,把当前时间作为分数,因为 Zset 是有序的,时间越小的排名越靠前。所以使用Zset作为延时队列就充分利用了score。 我们还是用订单例子来距离,如果订单超过 24 小时未付款,那…

3 分钟 · 22 次阅读
实战 PHP
PHP 利用 Redis List 数据结构实现消息队列

Redis 本身是用来做缓存的,但是其中有一些特性是我们可以用来完成消息队列的功能,比如如果能够容忍数据的丢失,并且持久化方面要求不是很高的场景下完成任务的分布式处理。 队列的基本实现 Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),而我们取出的时候可以从头部…

3 分钟 · 23 次阅读
Docker & K8S PHP
Docker && PHP #2 多容器运行 Apache + PHP

我们来继续利用 Docker 搭建 PHP,目前主流的 PHP 运行模式还是基于 FPM,那么在这节中,我们来使用 Dcoker 搭建 PHPFPM。 首先是下载镜像。 其体积只有 76M,我们在运行容器时候可以使用 d 让容器在后台运行。 接下来,我们安装 apache。 我们还是利用上一次我们编写的 Hello D…

2 分钟 · 25 次阅读
Docker & K8S PHP
Docker && PHP #1 使用 PHP 官方镜像运行第一个 PHP 程序

目前 Docker 部署算是比较流行的方式,在传统方式搭建生产环境时候我们需要人工进行编译,我们可以利用 Docker 来简化这一步操作,直接拉取官方镜像。 这个镜像对于值运行 cli 程序来说镜像镜像有些太大了,镜像大就涉及到了拉取时间慢,而且占用磁盘资源,我们也可以选择 alpine 的版本,这是一个专门面向 do…

2 分钟 · 16 次阅读
实战 PHP
变种的数据中心:实现数据的组合返回

网上有很多数据模式的文章,这里不会按照已经成型的书和文章来进行编写,这样没有任何意义,在应用设计模式的时候一定要根据自己业务和使用的语言来进行编写。 在工厂模式中,我们基于商城的案例编写了一个书、狗和酒的工厂案例,在线我们对需求进行一次迭代,老板决定每个商品的 getList 方法都要额外加上狗的信息(狗本身除外)。 …

3 分钟 · 15 次阅读
实战 PHP
工厂模式的故事:程序员、书和狗

在正式开始之前,我们先来编写一个自动加载功能,这样我们就不用老是 include 文件了。 首先我们声明一个 ROOTPATH,用来帮助我们定位当前目录 autoload 函数,用来自动文件的函数,其中定义了加载规则,我们统一将代码放到 src 目录下,每个类文件的后缀为 .class.php 通过 splautolo…

4 分钟 · 14 次阅读
PHP
PHP 中 emtpy、isset、is_null的区别

PHP 提供了3个用于测试变量值的函数,分别是isset、empty、isnull(从这里就可以看出PHP系统函数变量名命名的混乱,这也是一直被人诟病的地方)。这几个函数均返回布尔值,有时使用不当会造成意想不到的结果。 比如,用isset和empty返回的结果是相反的,但却并非一直如此。 isset用来检测一个变量是否…

3 分钟 · 20 次阅读
实战 PHP
PHP 为什么要省略结束标签

对于PHP编译器来说,脚本的结束标签?是可选的,在写程序时你可以忽略它。你或许碰见过:在使用include、require或输入输出缓冲函数时,页面顶部有时会多空行或者出现“header had send”之类的错误信息,这类问题与结束标签有关。 省略结束标签适合纯PHP文件。如果是PHP与HTML混合开发,则不可省略…

1 分钟 · 16 次阅读
PHP 原理
一本深入学习PHP内核的书 -《PHP internals Book》

今天给大家介绍一本 PHP 扩展开发相关的书籍《PHP internals Book》,这本书是几个PHP开发人员之间的协作努力,可以更好地记录和描述PHP内部的工作原理。 《PHP internals Book》 有三个主要目标: 记录和描述PHP内部工作原理。 记录并描述如何使用扩展扩展语言。 记录并描述如何与社区…

2 分钟 · 25 次阅读
PHP
PHP中的 $this

TITLE: categories: PHP date: id: 1 当一个方法在类定义内部被调用时,有一个可用的伪变量 $this。$this 是一个到主叫对象的引用(通常是该方法所从属的对象,但如果是从第二个对象静态调用时也可能是另一个对象)。 $this 伪变量的示例 以上例程会输出: 由于静态方法不需要通过对象…

1 分钟 · 30 次阅读