-
11-10-2019 - |
题
我是PHP的新手,因此我决定实施单身人士。
虽然我能够在PHP中重新创建Singleton模式,但我不确定如何实现双重检查的锁定。
在PHP中甚至可能/需要。我在某个地方读到PHP不是多线程吗?有人可以确认吗?
如果是多线程,有人可以向我解释锁定()或同步()在PHP中如何工作吗?
谢谢,亨利
解决方案
没有共享的建筑
PHP有一个 没有共享的建筑:
- 像http一样,每个请求都是不同的
- 共享数据被推到数据存储层
- 避免前控制器
这给了我们:
- 负载平衡的能力
- 从一个数据中心到另一个数据中心的无形故障转移
- 更好地模块化应用
- 更容易开发和调试
双检查锁定
但是我不确定如何实现双重检查的锁定。
通常,数据库层为此负责。 MySQL(InnoDB)标准有例如行级别 锁定(这应该足够)。
InnoDB确实在行级别上锁定,并以Oracle的样式默认情况下将查询作为非锁定一致的读取。
如果这还不够,例如SQL也有 交易 实现这一目标。
在线书籍将交易定义为“作为单个逻辑工作单位执行的操作顺序”
叉进程
就像幻灯片所说的PHP具有无共享的结构(传统),这也意味着PHP没有 线程(型号). 。虽然您可以编译(默认未启用)php支持 叉子 可以相互通信的过程。当您还编译 信号函数 那你可以做类似的事情 sem_acquire 和 sem_release. 。但是通常,这不应用PHP。
不隶属于 StackOverflow