Java与PHP进行Web应用程序决策(再次)

事实:我们正在谈论一家小公司(5人),有许多赚钱(我们没有)的客户。我们提供了自己的软件,该软件具有针对电子商务完成的独特功能。

问题:该问题在2012年左右首次出现,并在2014年左右通过Web套接字明确了。一些客户不希望与客户进行简单的聊天,而是想要一个完整的在线eShop,在这里他们可以协商产品的价格,甚至可以与访客进行讨论。解决方案是在我们的框架中实现Web套接字,并且可以正常工作,但使用令人难以置信的资源,而没有任何横向补偿。那可能是什么?:1)我们使用应用程序范围缓存(针对对象或对象列表),并认为这是在服务器内存中完成的,因此每个请求都必须反序列化/序列化(如果有更改)对象(是CPU昂贵且耗时的时间,我计算出每个响应花费了近2毫秒的时间。此外,如果我在应用程序中运行某些内容,为什么不拥有一个数据库池,其中最常见的预处理语句仍然存在?

第一个解决方案:是一个新的PHP框架,基本上是一个C ++扩展,一切正常(几乎(如果有兴趣的人我可以分享更多))(它仅在一个项目中投入生产)。当这些对象更新时,应用程序范围缓存正在与储物柜一起使用,并且我们可以对PHP中的数据库池有一个初步的了解。此外,它还可以消除DNS查找,因为SPA应用程序将钩到WebSocket(如果可用)或AJAX(如果没有)。 (当我在这里谈论SPA时,如果您第一次访问某个URL,就像通过内部链接访问该URL一样,您将看到相同的内容)。

然后出现了PHP 7.0.2:PHP的失禁是巨大的,但是所有事情都粉碎了。实际上,我们并不是在试图产生一个框架,而是试图产生一个能够容纳该框架的应用服务器。应用服务器部分可以用更多的资源和特定的PHP版本来完成,但是我们没有资源,也不想将自己绑定到特定的PHP版本。

/ let往回移动/时刻:有一种语言,您可以使用应用程序服务器,可以共享应用程序范围的缓存对象而无需反序列化/序列化,并且还具有许多用于Web套接字的附加组件,而且更容易使用,我知道从十几岁开始(不是我的第一语言),该语言就是Java,例如Tomcat之类的应用服务器。

做出决定很困难,切换到Java需要重写我们所有的应用程序,但是将实现两个主要目标(应用程序范围缓存,数据库池)。另一方面,使用系统扩展(例如imageMagick)来了解JVM的内部工作方式并为此编写良好的代码是有局限性的。

Java的一个优点是,之后我们可以共享不带类的Java代码,而一个严重的缺点是我们不能编写更多的C ++扩展来使我们的生活更轻松+更快+更高效。但是维护一个PHP应用服务器比我最初想的要困难得多。

由于我处在十字路口,因此我对此表示感谢。