加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Symfony2 Composer(多个域)

发布时间:2020-12-13 16:46:58 所属栏目:PHP教程 来源:网络整理
导读:我们目前正在将项目迁移到symfony2.该网站使用多个域: domain.com – 主要网站 help.domain.com – faq profile.domain.com – 用于用户CP 等等 为了使它工作,我的想法是创建目录’sites’,并为每个子域创建自己的目录,其中它具有框架文件供应商目录,符号链
我们目前正在将项目迁移到symfony2.该网站使用多个域:

> domain.com – 主要网站
> help.domain.com – faq
> profile.domain.com – 用于用户CP

等等

为了使它工作,我的想法是创建目录’sites’,并为每个子域创建自己的目录,其中它具有框架文件供应商目录,符号链接到根供应商/ *中的目录(除了composer和autoload.php文件之外的每个目录).
所以结构看起来像这样:

root/
    sites/
        domain.com/
            app/
            src/
            web/
            vendor/
                symlinks for each library to root vendor
            composer.json
            composer.lock
        profile.domain.com/
            app/
            src/
            web/
            vendor/
                symlinks for each library to root vendor
            composer.json
            composer.lock
    vendor/

我需要这样做,因为每个域的自动加载必须是不同的(我们存储供应商/公司中的域之间共享的代码,并且每个域的唯一代码存储在域目录的/ src文件夹中) .

问题是,现在我必须在每个目录上执行“composer install”并创建自己的composer.lock,如果我稍后在任何目录中更新,则会更新lib,但不会同步composer.lock文件,所以每次都会重新安装它.

有没有更好的方法来解决这个问题? (我想把composer只放在root目录下,但是我没有找到为每个域转储不同autoload.php文件的方法).

解决方法

您要么拥有一个具有一组依赖项的项目,要么拥有两个具有单独deps的项目.介于两者之间的任何事情都没有意义.看起来您想要使用第一个选项,但担心自动加载性能.

问题是默认情况下,自动加载会很慢.因此,即使您有两个单独的自动加载文件,仅包括特定子项目的deps,它可能仍然会非常慢.

你真正应该做的是转储一个类映射,它基本上是一个自动加载文件,它将所有类名映射到它们所在的文件.这样可以保持stat调用,从而非常有效.在两个子项目中加载整个类映射也不应该给你带来太多开销,特别是如果你启用了APC.

您可以使用以下命令转储类映射文件:

$composer dump-autoload --optimize

现在您应该获得更高的自动加载性能.

TLDR:使用单个composer.json和类映射自动加载,它很快.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读