我是PHP的新手,因此我决定实施单身人士。

虽然我能够在PHP中重新创建Singleton模式,但我不确定如何实现双重检查的锁定。

在PHP中甚至可能/需要。我在某个地方读到PHP不是多线程吗?有人可以确认吗?

如果是多线程,有人可以向我解释锁定()或同步()在PHP中如何工作吗?

谢谢,亨利

有帮助吗?

解决方案

没有共享的建筑

PHP有一个 没有共享的建筑:

  • 像http一样,每个请求都是不同的
  • 共享数据被推到数据存储层
  • 避免前控制器

这给了我们:

  • 负载平衡的能力
  • 从一个数据中心到另一个数据中心的无形故障转移
  • 更好地模块化应用
  • 更容易开发和调试

双检查锁定

但是我不确定如何实现双重检查的锁定。

通常,数据库层为此负责。 MySQL(InnoDB)标准有例如行级别 锁定(这应该足够)。

InnoDB确实在行级别上锁定,并以Oracle的样式默认情况下将查询作为非锁定一致的读取。

如果这还不够,例如SQL也有 交易 实现这一目标。

在线书籍将交易定义为“作为单个逻辑工作单位执行的操作顺序”

叉进程

就像幻灯片所说的PHP具有无共享的结构(传统),这也意味着PHP没有 线程(型号). 。虽然您可以编译(默认未启用)php支持 叉子 可以相互通信的过程。当您还编译 信号函数 那你可以做类似的事情 sem_acquiresem_release. 。但是通常,这不应用PHP。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top