Php 有一个单一的网站入口点。糟糕?好吗?没有问题?

Php 有一个单一的网站入口点。糟糕?好吗?没有问题?,php,model-view-controller,Php,Model View Controller,这个问题源于观看。顺便说一句,这个问题和他的演讲与Drupal没有什么特别的关系。。。这只是在他们的骗局中给出的。我自己的问题也与PHP无关。总的来说,这是我好奇的单一切入点 如今,似乎大多数框架都为使用它们构建的任何东西提供了一个单一的入口点。拉斯穆斯在他的演讲中提到,他认为这很糟糕。在我看来,他这种想法是正确的。如果每个访问站点的人都是从同一个入口进入的,那么在流量达到某一点后,事情不会陷入停滞吗?允许人们直接访问站点中的特定点而不让他们的请求通过同一点不是更有效吗?但实际影响可能不是很坏吧

这个问题源于观看。顺便说一句,这个问题和他的演讲与Drupal没有什么特别的关系。。。这只是在他们的骗局中给出的。我自己的问题也与PHP无关。总的来说,这是我好奇的单一切入点


如今,似乎大多数框架都为使用它们构建的任何东西提供了一个单一的入口点。拉斯穆斯在他的演讲中提到,他认为这很糟糕。在我看来,他这种想法是正确的。如果每个访问站点的人都是从同一个入口进入的,那么在流量达到某一点后,事情不会陷入停滞吗?允许人们直接访问站点中的特定点而不让他们的请求通过同一点不是更有效吗?但实际影响可能不是很坏吧?也许现代建筑能解决这个问题?也许在它变得更值得考虑之前,你必须在规模上真正巨大?我很好奇这个网站上的人们对这个问题的看法。

重要的是,您使用的web框架通过负载平衡和声明性代码等方法支持可伸缩性

不,单个入口点本身并不构成瓶颈。谷歌的首页点击率很高,但他们有很多服务器


所以答案是:没关系。

这是我起初的想法,但似乎没有什么影响。毕竟,您的入口点(通常)只做了几件事:设置一些环境常量,包括引导加载程序,有选择地捕获抛出的任何异常,并分派前端控制器。我认为这不是低效的原因是因为此文件不会根据控制器、操作甚至用户而更改


不过,我确实觉得这很奇怪。目前我自己正在构建一个小型MVC框架,但它与我使用的大多数框架略有相反。我将控制器逻辑放入访问的文件中。例如,index.php将包含IndexController及其操作。这种方法至少对我来说很有效。

我认为与只有一个入口相比,您的最大优势之一是安全性。如果在一个地方对系统进行检查和验证,那么所有输入都不太可能损坏系统。

由于大多数php mvc框架都使用某种url重写,或者至少自己解析index.php之后的任何内容,因此需要一个入口点


除此之外,我喜欢根据上下文提供入口点,比如web(/soap)/console/…

简言之,Rasmus或解释是错误的

这表明人们对计算机的工作方式缺乏了解。使用的东西越多,它越接近CPU,因此速度越快。请注意,只有一个入口!=单点故障。但这一切都无关紧要,当人们说单点进入时,我们谈论的是应用程序,它是你逻辑的单点进入


更不用说,没有一个中心入口点,或者总体上减少入口点的数量,在体系结构上是脑死亡。只要你想在每个入口点跨应用程序做一件事,猜猜有多少地方需要更改?在处理了一个每个页面都独立的应用程序之后,它不得不改变,我向你保证,我们需要它。

就像软件开发中的任何东西一样,这取决于它。Rasmus对前端控制器风格框架的反对意见是,在每次请求之前加载这么多代码会对性能造成影响。这是百分之百正确的。即使您使用的是某种智能资源加载模块/对象等,使用框架也是一种性能权衡。你受到了性能上的打击,但作为回报,你又回来了

  • 鼓励分离“业务逻辑”(不管是什么)和模板/布局逻辑

  • 对用于数据库查询、服务调用、数据模型等的对象进行即时和(更重要的)统一访问

  • 对于像拉斯莫斯这样的人来说,这不值得在表演上大放异彩。他是一名C/C++程序员。对他来说,如果你想以一种高性能的方式分离业务逻辑,你可以编写一个PHP的C/C++扩展

    因此,如果您有一个环境和团队,您可以轻松地为PHP编写C/C++扩展,并且您的上市时间与性能比是可以接受的,那么是的,扔掉前端控制器框架


    如果不是你的环境,考虑前控制器框架可以给你的.E/P>< P>带来的生产力提高,人们通常认为,因为有一个PHP页面,它是一个服务所有请求的单一页面。有点像排队

    需要注意的重要一点是,每个请求都会创建一个脚本实例,因此,负载与同时访问两个不同页面的情况相同。所以,还是一样的负荷。实际上

    然而,有些框架可能有很多你不需要在入门脚本中进行的东西。有点像catchall来满足所有可能的场景,这可能会导致负载


    就我个人而言,我更喜欢多页,就像我混合oop和过程的方式一样。我喜欢老式的php。

    使用前端控制器文件体系结构肯定有缺点。正如Saem所解释的,访问同一个文件通常对性能有利,但正如Alan Storm和Rasmus Lerdorf所解释的那样,试图让代码处理多种情况(例如前端控制器试图处理对站点上每个“页面”的请求)会导致代码集合臃肿而复杂。为每个页面加载使用臃肿而复杂的代码集合可能被认为是不好的做法

    Saem认为前端控制器可以使您不必在多个位置编辑代码