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

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

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

光年之外

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 12

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

6个月前
leo

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

6个月前

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

6个月前

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

6个月前
那个松鼠很眼熟

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

6个月前

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

6个月前

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

6个月前

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

6个月前
调调

连接池

6个月前

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

6个月前
调调

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

6个月前

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

6个月前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!