42
回答
为什么总有人喜欢用php构建业务支撑?

等了很久,看到了这样的错误,体验了一把whmcs这个用php构建的著名的商业的业务系统。

没有数据库连接池的一门脚本,没有完整的锁/CAS和原子量/信号灯等的一门脚本,搞搞页面输出也就罢了,为什么总有人喜欢用这玩意构建业务复杂或者业务严谨的系统?

什么是web pages什么是application system? web都是它们的表现形式,但真的一样吗?

全把压力打到了后端的数据库上,不停的随着流量增加而创建db session也不断的销毁session,机器的性能就是被这样缺乏设计的逻辑来肆意浪费的么?

PHP
举报
darkdada
发帖于3年前 42回/2K+阅
共有42个回帖 最后回答: 3年前

只能说做这个系统的没做好,这事情和语言无关。

你提到的锁等一系列东西和语言无关,这就不细说了。

php以前可能要每个请求都建立数据库连接,但这几年php-fpm已经成熟,基本成为php部署网站的标准,这就是连接池。

至于数据的严谨性,责任全在数据库,仍然和语言无关。

引用来自“乌龟壳”的评论

只能说做这个系统的没做好,这事情和语言无关。

你提到的锁等一系列东西和语言无关,这就不细说了。

php以前可能要每个请求都建立数据库连接,但这几年php-fpm已经成熟,基本成为php部署网站的标准,这就是连接池。

至于数据的严谨性,责任全在数据库,仍然和语言无关。

构建一套连接池/对象池或者其它池化的技术,没有锁怎么可能?没有CAS原子怎么可能?

你要是能真正全面的认识到连接池的意义,便不会这么说了。

--- 共有 9 条评论 ---
乌龟壳回复 @darkdada : php是多进程模型的,java是多线程的,各有优势,在web开发方面都是可行的。 3年前 回复
乌龟壳回复 @darkdada : php-fpm和druid的机制是不一样的,但是都能实现池的效果。php-fpm把每一个php进程都和一个数据库连接作了绑定,不会有切换操作。druid是针对java的多线程环境,建造了一个数据库的连接对象池。网页处理线程和druid没有一对一的绑定关系。 3年前 回复
darkdada回复 @乌龟壳 : 看https://github.com/alibaba/druid 请评估一下用php实现druid所有功能的可行性? 3年前 回复
乌龟壳回复 @darkdada : 抛开PHP是脚本还是语言,你问题里提到的那几点明白了没?php有连接池php-fpm,不会不停连接关闭,这样确实很2。至于锁和业务严谨性,主要还是数据库问题,就算你说抛开数据库的严谨性,php仍然能调用系统底层API实现锁。 3年前 回复
darkdada回复 @乌龟壳 : 故而言之“脚本”,不可称之为“语言”。 3年前 回复

引用来自“朱__朱”的评论

貌似你说的问题与php无关啊,最多是你试用的这个什么whmcs系统写的不行吧。

这是个商业“系统”,要卖钱的,人家的介绍是这么写的,WHMCS is the leading web hosting automation platform.  要论php水平的登峰造极程度,人家商业公司不会差到那里吧?


whmcs只是IDC业务客户服务支撑系统而已

算不上什么核心,用PHP开发有什么奇怪的,本来就是网页啊

--- 共有 4 条评论 ---
darkdada回复 @Admstor : 看来你是idc行家,不过这个问题上只是讨论在有连接池约束保护后,就不会有过多压力打到数据库,而不是说挂了之后会有什么影响后果。如果php能做到这点,便不会有这些讨论,本质上这是语言无关的,但是php又难以支撑这些需求点。 3年前 回复
阿宅plus回复 @darkdada : 当然了,如果在此基础上深入开发,然后实现了很多敏感操作的自助/自动操作,也依旧只是不变一些操作,但对于稳定的客户而言不会有影响.如果你说你的自助/自动操作导致了VM/物理机的实际损坏,那是你开发太过耦合,还是和语言没什么关系. 3年前 回复
阿宅plus回复 @darkdada : 因为我就是做IDC的,所以这个系统我也有所了解.IDC的核心资源跟这系统都完全不相干,我内部网络的配置,底层IAAS架构,存储都不是靠这个来实现,这东西就是一个客服+账单罢了,就算坏掉了也只是客户当前不能进行一些配置变更,但是实际上跑的都是正常的. 3年前 回复
darkdada分配和管理机器资源,管理账单计算,这不算核心那算什么? 无论核不核心,总要保持点健壮性吧,动不动压力深入打垮数据库,且问题还可追溯到这门语言的设计模型上,倘如可以构建一个严谨的连接池像druid一样,起码超过maxActive的请求是不可能打到数据库上的,这就是语言完备带来的基础环境上的优势。 3年前 回复

看见个表像就在哪喊,我怎么看是前面是php表现层,后面一堆java api的模式,然后后端挂了把错误扔到前端了。。。。

--- 共有 1 条评论 ---
darkdada洞察力好丰富啊,我服了。。。 3年前 回复
顶部