我们假设:
我在同一台Apache服务器上有数千个域名。
每个域都位于服务器public_html文档文件夹下的文件夹中,因此可以通过调用“www.somedomain.com”或通过调用“www.serverdomain.com/somedomain_folder”
在每个域中有一个网站需要一个script.php(每个域相同)。
从编码的angular度来看,很明显最好是使用一个独特的script.php,所以当我用新的function/错误修复等更新时,我需要在服务器上更新只有一个文件,它将适用于所有域。
但从服务器的angular度来看? 如果我使用一个独特的脚本,所有的域将同时访问它,相比于每个域都调用自己的脚本的情况,服务器运行速度会慢一些吗?
如果我使用一个独特的脚本,所有的域将同时访问它,相比于每个域都调用它自己的脚本的情况,服务器运行速度会慢一些吗?
我认为这是相反的。 它不应该慢 。 问题是,“ 共享运行会让它更快 ”? 至于这一点 – 理论上, 是的 。 但实际的区别可能是不明显的。
重点是 – 如果只有一个脚本适用于所有用户(共享库的概念),则不仅如前面指出的那样更容易维护,而且内置的caching机制应该更有效率(至less从我对学科)。 一个文件读取,简单的方法来caching在内存中。 多个相同的文件(不sym- / hardlinked,不同的inode ) – 这是更多的问题。 还是我低估了Linux的function? 如果我错了,请纠正我 – 我对内部的知识不是那么深刻,但我认为这会导致独立的寻求/缓冲。
另一点 – 使用操作码caching 。 我不确定它在不同实现中的外观,但是在大多数情况下,使用多个相同的脚本会导致不必要的caching条目 。 但是,共享脚本存在一个潜在的问题,即caching过于积极(如在不同用户之间caching外部configuration文件)。 我最近遇到了这种XCache和硬链接的行为。 有了适当的configuration和没有错误的实现,但它不是一个问题。
所以,我的结论是 :
如果可行,我会使用共享的安装方式和性能 。 但是,在某些情况下,性能的差异可以忽略不计,所以可能是“ 什么更适合你的情况 ”。
我认为最好是将脚本放在服务器的PHP包含path中,并将其用于所有的网站。
我不认为维护每个域的副本将导致速度的提高。 如果您在使用通用脚本时发现速度变慢,请尝试使用各种php / apachecaching模块来加快速度。
是的,正如你所说,你可以在一个地方更新,所有网站将使用更新的PHP脚本。 这种特殊的便利性胜过许多其他的select。
根据我的经验,使用通用模块的共享目录不会降低服务器的速度,否则您将拥有所有域的所有PHP库的唯一副本。