我有一个服务器,其中包含多个Zend Framework
应用程序。
我想知道在服务器上上传Zend Library
并在所有应用程序中共享它而不是按应用程序上传它是否是一个好主意。
如果例如多个应用程序同时请求库,它是否会影响速度。
它的优点和缺点是什么?
提前谢谢。答案 0 :(得分:4)
我的回答一般适用于共享库,因为这不应该特定于Zend Library:
分享的PROS:
赞成共享:
答案 1 :(得分:3)
正如其他人所指出的那样,有利有弊。最重要的是,每次要升级库代码时,都需要测试每个应用程序,而不仅仅是现在需要升级的应用程序。
最重要的是,如果你正在使用像APC这样的操作码缓存(你应该这样做),你就会浪费相当多的内存来加载相同的库代码块。根据操作码缓存的大小以及实际运行的库代码的数量,这可能会在某些时候成为问题。如果您的操作码缓存大小不足以容纳所有内容,那么最终会产生一定程度的性能损失。
中间解决方案是将所有库保留在可以共享 的服务器上。构建应用程序以使用一些配置值进行加载。
APP1:config.php
<?PHP
define('ZEND_LIB_PATH','/path/to/ZendFramework-1.9/library');
set_include_path(ZEND_LIB_PATH . PATH_SEPERATOR . get_include_path());
APP2:config.php
define('ZEND_LIB_PATH','/path/to/ZendFramework-1.10.1/library');
set_include_path(ZEND_LIB_PATH . PATH_SEPERATOR . get_include_path());
这样一来,如果两个应用程序碰巧使用相同的版本,他们可以共享该版本的操作码缓存,但你并不依赖它。
免责声明:我实际上并没有这样做,所以你可能希望在将理论付诸实践之前对其进行测试。
答案 2 :(得分:2)
如果应用程序是独立的,我会为每个应用程序提供自己的库,以避免在需要升级其中一个应用程序库时出现问题,但不希望必须使用该库版本测试和更新它们
然后,如果这些应用程序共享代码,它们也应该共享库,以避免在每个站点上运行在不同库版本下的共享代码的更严重问题。