Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么时候.php文件太大?_Php_Apache - Fatal编程技术网

什么时候.php文件太大?

什么时候.php文件太大?,php,apache,Php,Apache,我正在写一个PHP类。目前有1000行代码,文件大小为46KB。这不是一个疯狂的尺寸,但这让我思考 问:由于文件大小和/或PHP文件中包含的代码量,性能在什么时候开始受到影响?对于PHP,如果每100行有10个文件或每1000行有1个文件,则没有明显的区别(特别是如果使用任何操作码缓存) 但是从可维护性的角度来看,最好将类的责任分成几个部分。正如其他人所建议的,文件大小的主要重点应该是可读性和保持代码库的可理解性 但是,关于PHP文件大小和性能的原始问题,这取决于需要什么类型的性能。对于不经常执

我正在写一个PHP类。目前有1000行代码,文件大小为46KB。这不是一个疯狂的尺寸,但这让我思考


问:由于文件大小和/或PHP文件中包含的代码量,性能在什么时候开始受到影响?

对于PHP,如果每100行有10个文件或每1000行有1个文件,则没有明显的区别(特别是如果使用任何操作码缓存)


但是从可维护性的角度来看,最好将类的责任分成几个部分。

正如其他人所建议的,文件大小的主要重点应该是可读性和保持代码库的可理解性

但是,关于PHP文件大小和性能的原始问题,这取决于需要什么类型的性能。对于不经常执行的PHP代码(例如通过命令行在客户机上执行的PHP程序,而不是由加载网页的访问者执行的PHP程序),可能无法注意到较大的文件大小

相反,在高性能场景中,即使相当小的PHP文件也会消耗大量的系统资源。PHP性能的一般问题是什么驱使Facebook为执行PHP代码而编写——因为曾经可以接受的PHP性能随着Facebook规模的扩大而变得可怕

一般来说,上述情况适用于优化——如果没有更广泛的上下文进行分类,就很难区分性能的好坏。如果您关心PHP代码的性能——无论文件大小是否相关——我建议使用PHP分析器,如监视服务器上的系统资源


在的建议下,我将以下关于PHP和操作码缓存的信息添加到我的答案中。不过,我想指出的不是我自己写的,而是关于这一点的公认答案,我不是任何方面的专家,但我要说的是,在文件大小占PHP内存限制的很大一部分之前,您可能不会遇到问题

我会告诉你,我在一个PHP文件中有一堆乱七八糟的代码。我刚查过,是11487行

该文件和另一个2056行的文件都包含在我的开发站点的每个页面上

我没有看到明显的性能问题

也许我应该解释一下为什么我有这么大的文件

我专注于让整个计划运作起来。我决定对大多数类只使用一个文件,这样我就可以轻松地搜索它并在任何类中进行更改,而无需查找文件。完成后,我会将所有类拆分为单独的文件,并使用autoload仅加载所需的类。这可能不会持续几个星期,但当我这样做的时候,我会在前后做一些基准测试,看看是否有任何性能差异,但我怀疑会有

现在,我网站上的每个页面都会加载该文件。我刚刚加载了主页,根据Chrome的数据,它花费了102ms。一个实际使用了很多类、做了一些数据密集型工作并和MySQL交互的页面花费了279毫秒

因此,在我看来,文件大小在远大于11487行之前并不重要。为了提高速度,您需要更多地考虑优化代码


例如,我刚才问了一个关于数组处理的问题,其中一些解决方案让我的代码运行了5分钟、30秒,还有一些解决方案的运行时间约为280毫秒。不要担心文件大小

数量远不如质量重要。如果您在任何地方复制/粘贴了相同的代码块,则说明您做得不对。创建一个函数。使用switch语句。嵌套的Ifs。我更担心的是创建高质量的代码,而不是数量。@sreservor,去别处浪费你的时间。@Brad为什么他说了什么?@ButtleButkus他说“Bieber for president!”这比其他任何答案都更能说明每一点+顺便说一句,操作码缓存对“文件号和性能”的影响可能值得一提。您的回答忽略了99.9%的介于“通过命令行在客户端机器上执行”和“Facebook”之间的场景。我很抱歉。我应该添加什么使其更好?在这些情况下,假设使用了操作码缓存,代码的组织方式是次要的,由于PHP使用词法分析器将代码转换为操作码,因此每个文件都有明显的不同。@Sébastien Renauld:你能证明你的话,并证明每100行解析10个文件比单个1000行文件需要更长的时间吗?请记住,您的想法是专门指向一个解析步骤,所以如果您试图证明它(我非常怀疑您会这么做),那么只测量解析步骤(并排除所有其他内容,即运行时),使用任何旧类常量初始化,它将创建1000个文件。1000个文件的运行时间约为0.150微秒,包含一个文件的运行时间约为0.080微秒。这是在禁用APC的情况下运行的(这很重要)@Sébastien Renauld:1。它是1个文件vs 10个文件(不是vs 1000)。2.您说过,由于解析器的不同,这是一个显著的差异,而如果您只是运行文件,则总时间是:IO、解析和运行时的总和。如果你想成为一个100%精确的人(我希望你想成为——否则你不会评论)——那么按照你的话,提供测试来证明解析的任何显著差异(将完全相同数量的代码放在一个文件中并拆分为10个文件)。你意识到解析和运行的区别了吗?我希望你能。