Symfony Composer安装时不清除缓存

Mic*_*Wit 5 php caching install symfony composer-php

我们使用不同的缓存目录到默认缓存目录,并使用构建代理进行部署.我们在构建代理上运行composer install,其中缓存目录不存在,然后将其同步到Web服务器,然后我们运行命令以清除和预热缓存(所有这些都是从Bamboo部署完成的).

当然,日志会在日志中返回,因为当代理程序安装在代理程序上运行时它无法创建缓存目录(我们不希望它在之后执行此操作).

有没有什么办法,当我运行作曲家安装时,我可以让它跳过缓存清除?我无法将其视为作曲家的参数选项.

Jak*_*zak 5

您只需删除以下行:

"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
Run Code Online (Sandbox Code Playgroud)

来自post-install-cmd和/或文件中的post-update-cmd部分composer.json.

假设你是构建代理正在做install,而不是update,将这一行保留在post-update-cmd开发工作的部分可能是有用的.

  • 效果很好.如果我的应用方式可以帮助某人:我将此添加到我的Jenkins脚本中:`sed -i'/.*"Sensio \\\\Bundle \\\\DistributionBundle \\\\Composer \\\\ ScriptHandler: :clearCache.*",/ d'/ var/www/myProject/composer.json`这让我在部署时修复,无需访问repo. (2认同)

Mic*_*Wit 4

正如其他人所说,Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler\xe2\x80\x8c\xe2\x80\x8b::installAssets 将在需要时清除缓存,这会导致问题如果您无法写入缓存(一旦从构建代理同步到实时服务器,我就会执行此操作)。

\n\n

目前我能找到的解决此问题的唯一方法是从composer.json 中删除这两行:

\n\n
"Sensio\\\\Bundle\\\\DistributionBundle\\\\Composer\\\\ScriptHandler::clearCache",\n"Sensio\\\\Bundle\\\\DistributionBundle\\\\Composer\\\\ScriptHandler::installAssets",\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后,一旦您位于具有可用缓存目录的服务器上,请运行以下 2 个命令(到此阶段,您应该已经完成​​了 Composer 安装/更新):

\n\n
php bin/console cache:clear --env=prod --no-debug\nphp bin/console assets:install --env=prod\n
Run Code Online (Sandbox Code Playgroud)\n\n

asset:install 可能需要也可能不需要,具体取决于安装的供应商捆绑包。任何使用“public”文件夹来存储资源的东西都需要这个,以便为 /web/bundles/bundleName 正确设置符号链接。此后我还进行了资产转储。

\n\n

通过执行此操作,您现在可以在单独的服务器或不同的目录中执行较长的部分(git 克隆和作曲家安装),然后将其 rsync 到您想要的位置。然后,您只需刷新并预热缓存并执行资产/资产(或您正在执行的任何需要缓存的操作)的最终配置,只需最少的停机时间或如果部署中途出现问题,您的站点就会出现任何问题。

\n