Mic*_*Wit 5 php caching install symfony composer-php
我们使用不同的缓存目录到默认缓存目录,并使用构建代理进行部署.我们在构建代理上运行composer install,其中缓存目录不存在,然后将其同步到Web服务器,然后我们运行命令以清除和预热缓存(所有这些都是从Bamboo部署完成的).
当然,日志会在日志中返回,因为当代理程序安装在代理程序上运行时它无法创建缓存目录(我们不希望它在之后执行此操作).
有没有什么办法,当我运行作曲家安装时,我可以让它跳过缓存清除?我无法将其视为作曲家的参数选项.
您只需删除以下行:
"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开发工作的部分可能是有用的.
正如其他人所说,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",\nRun Code Online (Sandbox Code Playgroud)\n\n然后,一旦您位于具有可用缓存目录的服务器上,请运行以下 2 个命令(到此阶段,您应该已经完成了 Composer 安装/更新):
\n\nphp bin/console cache:clear --env=prod --no-debug\nphp bin/console assets:install --env=prod\nRun Code Online (Sandbox Code Playgroud)\n\nasset:install 可能需要也可能不需要,具体取决于安装的供应商捆绑包。任何使用“public”文件夹来存储资源的东西都需要这个,以便为 /web/bundles/bundleName 正确设置符号链接。此后我还进行了资产转储。
\n\n通过执行此操作,您现在可以在单独的服务器或不同的目录中执行较长的部分(git 克隆和作曲家安装),然后将其 rsync 到您想要的位置。然后,您只需刷新并预热缓存并执行资产/资产(或您正在执行的任何需要缓存的操作)的最终配置,只需最少的停机时间或如果部署中途出现问题,您的站点就会出现任何问题。
\n