11

这个问题可能会促使一些人几乎立即说出明确的“是”或“否”,但请继续阅读......

我有一个简单的网站,其中有 30 个 php 页面(每个页面都有一些 php 服务器端代码 + HTML/CSS 等......)。没有复杂的层次结构,什么都没有。只有30页。

我还有一组纯粹的后端 php 文件——这些文件包含用于将内容保存到数据库、进行身份验证、发送电子邮件、处理订单等的代码。这些将被这 30 个内容页面重用。

我有一个向其发送参数的主 php 文件。这指定需要这 30 个文件中的哪一个,并且它包含适当的内容页面。但其中每一个都可能需要包含可变数量的后端文件。例如,一个内容页面可能不需要后端的任何内容,而另一个可能需要数据库代码,而其他内容可能需要电子邮件、数据库和身份验证代码等......

我想无论需要什么后端页面,都可以包含在适当的内容页面中,但是路径中的一个小改动,我必须编辑数十个文件。检查请求了哪个内容页面(事物类型的 switch-case 类型)并在主 php 文件中包含适当的后端文件太麻烦了。同样,如果单个路径发生更改,我必须进行许多更改。

由于懒惰,我在主文件中包含了所有后端文件,因此没有内容页面可以请求未包含的内容。

第一个问题 - 这是一个好习惯吗?如果它是由任何人完成的。

其次,无论是否需要,包括所有后端文件,是否会出现性能问题或任何类型的问题?

编辑

该网站每天的访问量在 3000 到 4000 之间。

4

9 回答 9

7

你应该进行基准测试。使用不同的包含时间执行同一页面。但我想30个文件不会有太大区别。

但是您可以节省时间,只需在 php.ini 中启用APC(它是一个 PECL 扩展,因此您需要安装它)。它将缓存文件的解析内容,这将大大加快速度。

顺便说一句:懒惰没有错,它甚至是一种美德;)

于 2010-02-04T08:37:05.190 回答
4

如果您的网站是面向对象的,我建议您使用自动加载(http://php.net/manual/en/language.oop5.autoload.php)。

这使用了一种神奇的方法(__autoload)在需要时寻找一个类(它很懒,就像你一样!),所以如果一个特定的页面不需要所有的类,它就不必获取它们!

不过,这又取决于它是否面向对象......

于 2010-02-04T08:52:56.393 回答
1

它会减慢您的网站速度,尽管可能不会显着降低。不过,这似乎不是一种组织应用程序的健康方式。我会重新考虑。尝试将应用程序逻辑(例如大部分服务器端代码)与表示层(例如 HTML/CSS)分开。

于 2010-02-04T08:34:53.777 回答
1

如果文件很小并且只包含定义和设置,这不是一个坏习惯。如果它们实际运行代码或非常大,则会导致性能问题。现在 - 如果您的网站每小时有 3 个访问者 - 谁在乎,如果您有 30000 ......这是另一个问题,您需要更加努力地将其最小化。

于 2010-02-04T08:38:07.513 回答
0

您可以通过使用XCache来减轻 PHP 代码编译的一些缺点。这个 PHP 模块将缓存 PHP 操作码,从而减少编译时间和性能。

于 2010-02-04T08:50:18.437 回答
0

考虑您网站的大小;如果您没有注意到减速,为什么要尝试修复它?

对于较大的站点,您应该做的第一件事是安装 APC。即使您当前包含文件的方法可能不会从 APC 中获得尽可能多的好处,但 APC 仍然会在加快处理速度方面做得非常出色。

如果响应速度仍然存在问题,您应该考虑包含所有文件。APC 会将源文件的缓存版本保存在内存中,但只有在没有条件包含的情况下才能做到这一点。

只有当您的 PHP 应用程序处于内存耗尽的风险很大时(请注意,对于大多数大型网站,内存不是瓶颈),您可能希望有条件地包含应用程序的某些部分。

Rasmus Lerdorf(PHP 背后的人)同意: http: //pooteeweet.org/blog/538

于 2010-02-04T09:00:14.937 回答
0

正如其他人所说,它不应该放慢速度,但这并不“理想”。

如果主要问题是您懒得去更改所有包含文件的路径(如果将来需要更新路径)。然后,您可以使用常量来定义主文件中的路径,并在需要包含/需要文件时使用该常量。

define('PATH_TO_FILES', '/var/www/html/mysite/includes/go/in/here/');

require_once PATH_TO_FILES.'database.php';
require_once PATH_TO_FILES.'sessions.php';
require_once PATH_TO_FILES.'otherstuff.php';

这样如果路径发生变化,你只需要修改一行代码。

于 2010-02-04T14:39:21.240 回答
0

它确实会减慢您的网站速度。大部分是因为 PHP 的加载和处理速度相对较慢。您想要包含的代码越多,应用程序就会越慢。

于 2010-02-05T22:05:30.497 回答
-1

我的生活是“尽可能少地包含,尽可能多地包含”,所以我通常只包含我的配置和会话处理,然后每个页面都使用配置包含中定义的包含路径包含他们需要的内容,因此对于路径更改您仍然只需要更改一个文件。

如果您包含所有内容,那么在您获得大量页面点击(每秒几次点击)之前,减速不会很明显,因此在您的情况下,只需包含所有内容可能就可以了。

于 2010-02-04T08:38:32.253 回答