PHP 多进程高并发下如何解决单例问题?

PHP 多进程高并发情况下,例:第一个请求通过判断但单例未生成,又有其它请求通过了条件判断,平常用的 PHP 单例将会产生多例,如何解决?锁、共享内存?

想起了之前的一个面试题,面试完后,问面试官刚刚的题目能不能提示一下,面试官给了我一个网址http://www.php-internals.com/book/,具体是那一章节,未想起来,看了一遍又一遍,查找过不少资料未找到满意的答案,由于经验知识有限,写 demo 也还未有完整的思路

光年之外
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 13

没看懂楼主的问题,每一个进程都是独立的,一个进程的单例类,和其他进程有什么关系?
高并发跟单例有什么关系?

5年前 评论
leo

PHP 每个请求之间的数据都是独立的,单例也只是在该次请求有效,当然如果是用 swoole 这种常驻进程的除外,如果面试官没有说这个前提那说明说他连基本的 PHP 运行机制都不了解。

5年前 评论

@leo 应该不会,时间较长了可能是我忘记了什么重要的东西,我对 PHP 多进程也没怎么了解过。对面的职位好像是研发组组长。

5年前 评论

@helloBear 进程间是独立的,当时对PHP多进程完全没了解过。我也就不知道怎么回答与问了。时间过久,有可能我忘记什么重要的东西了。个人现在猜他可能是要通过这个问题,考查我多进程间共享内存方面与高并发处理吧

5年前 评论

想不通单例和高并发有什么关系 再高的并发也不可能让PHP-FPM的一个进程同时执行两个请求

5年前 评论

@那个松鼠很眼熟 PHP-FPM一个进程肯定只能执行一个请求,个人现在猜对方问这个问题就是想知道我怎么解决进程内存共享的吧,但是又感觉,已经共享了,高并发时,第一个请求通过判断,未生成单例,第二个请求又通过判断,这种情况,还是用锁,反正到现在也还是蒙蔽,当时完整的对话也想不起来了。

5年前 评论

@FreeMason 共享用数据库或socket什么的

5年前 评论

@lovecn 能把思路流程讲一下吗

5年前 评论
调调

连接池

5年前 评论

@调调 连接池,如何解决?有点不懂

5年前 评论
调调

@FreeMason 百度下连接池,说不定能解决你的问题

5年前 评论

PHP本身就是单进程,PHP-FPM是负责进程管理的。从代码上讲,每一次请求,都是一个进程,不会造成什么冲突。单利和静态本质上是一样的,都是针对一次请求的处理

5年前 评论

我刚用bind注册的实例,在多队列中用Facades实例化,并发时会变成单例,这个怎么解决?

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!