Php 为什么像这样的动态框架是不可伸缩的?

Php 为什么像这样的动态框架是不可伸缩的?,php,dynamic,frameworks,scalability,scaling,Php,Dynamic,Frameworks,Scalability,Scaling,我一直喜欢动态代码。代码很容易添加酷的新特性,无需做很多工作。出于这个原因,我构建了很多动态框架,并在我的项目中使用它们。有些小,有些大 作为一个例子,我构建了一个小型的自定义错误报告框架,我现在几乎在所有项目中都使用它 下面是一个简单的例子,说明它是如何工作的: error\u reportLibrary.php-这就是所有神奇发生的地方。类和所有方法都位于此处。这是需要框架时包含的文件 error\u reportConfig.php-这就是我的配置(错误类型等)。下面是这个文件的一个示例,

我一直喜欢动态代码。代码很容易添加酷的新特性,无需做很多工作。出于这个原因,我构建了很多动态框架,并在我的项目中使用它们。有些小,有些大

作为一个例子,我构建了一个小型的自定义错误报告框架,我现在几乎在所有项目中都使用它

下面是一个简单的例子,说明它是如何工作的:

error\u reportLibrary.php-这就是所有神奇发生的地方。类和所有方法都位于此处。这是需要框架时包含的文件

error\u reportConfig.php-这就是我的配置(错误类型等)。下面是这个文件的一个示例,它将给您一个关于小框架如何工作的很好的解释:

代码中的注释应解释每个元素作为设置的作用

因此,正如您可能知道的,每个错误类型只是我使用框架的项目的不同部分(例如,SQL Core是我使用的数据库框架。因此,如果出现任何db查询问题,在打印错误时将查看此错误类型)

因此,对于打印错误,以下是语法:

errorModule::doError("errorType","error messege");
正如你所看到的,我可以做一些额外的小事。比如显示某些IP地址并突出显示错误文本,我可以自信地说:这不会影响框架的可伸缩性

请记住,以上只是我在项目中创建/使用的动态框架的一个示例

现在,关于这个问题(几乎是):我的一些学院告诉我,像上面这样的动态框架在可伸缩性方面很糟糕。尽管它们非常易于维护。因此,如果我在一个每天收到100多万个请求的web应用程序上使用上述框架,它将完全搞砸


现在我不是反对他们的意见(实际上…),但我想知道为什么会这样?为什么像上面这样的动态框架被认为不利于可伸缩性?

我认为您在创建“动态框架”时没有抓住要点

我以前的很多PHP代码都是这样运行的;一个类,包含一组方法,可能还有一个设置状态的构造方法,使用全局变量跟踪数组中的配置。与完全面向对象的方法相比,这些方法都使用了大量内存;是的,与“现成”解决方案相比,内存更少,速度更快;与我现在设计框架的方式相比什么都没有

您似乎没有利用接口、抽象类、类和接口继承等方面的优势。这些类型的框架确实可以扩展,因为原始代码库非常小,并且利用了特定的OOP功能(比如PHP5.x的神奇方法)

将一个您认为在服务器上运行速度足够快的脚本乘以100,这样就不会产生很多问题;你的内存不足,翻页;事情会慢慢发展到你不得不重新启动/在服务器上投入更多资源的地步


为什么??写得很差的过程代码试图表现OOP,甚至试图看起来像OOP,这只是将旧习惯包装在一个新的包中。

PHP通常速度慢且笨重。它是高级的,这意味着每条线路都有“行李”。通常,一行PHP代码将转换为大量低级指令

您仍然可以扩展严重依赖PHP底层系统的“动态”框架,并且不必为高级抽象浪费大量时间或内存

在我看来,大型“方便的”框架通常会导致比它们在生产环境中解决的问题更多的问题。我最喜欢的老师总是提醒我要做K.I.S.S.——保持简单愚蠢

当然,如果你想要真正可伸缩的性能,你可能想编译你的PHP或者用C++之类的编译语言编写你的应用程序。

errorModule::doError("errorType","error messege");