【问题标题】:Laravel problem with cache file when deploy to heroku部署到heroku时缓存文件的Laravel问题
【发布时间】:2021-10-29 20:45:10
【问题描述】:

我的应用程序正在使用 laravel 8。我将它从 github 部署到 heroku,我想像我在 localhost 中使用 php artisan config/route/view/event:cache 一样缓存应用程序的配置。问题是我不知道在哪里运行这些命令,如果我可以在我的应用程序中创建缓存文件,那么 heroku 将在特定时间后删除它们,因为它们不是从 github 部署的永久文件。任何人都知道如何处理这个请告诉我该怎么做。谢谢!

P/s:我尝试像下面的链接那样做,但它没有在我的应用程序中创建任何缓存文件。 https://dev.to/autoidle/laravel-deployment-optimization-on-heroku-1hkc

[新更新] 缓存配置的方式按照上面的链接创建缓存文件。我现在唯一关心的是heroku是否会在特定时间后删除这些缓存文件。我稍后会等待并更新信息(或者任何知道答案的人请告诉我)谢谢!

【问题讨论】:

  • 为什么把上一个问题删了再发?
  • @GertB。很抱歉给您带来不便,但我的帖子已关闭,因为不清楚(idk 为什么),尽管我尝试编辑帖子,但我无法重新打开它以接收答案。那是我第一次在 stackoverflow 中提问。
  • 如果帖子因为不清楚而被关闭,您不应该只是重新发布。至少改变它以使其清楚。
  • 你可以这样在 Heroku 上运行命令:heroku run /app/php/bin/php /app/www/artisan optimize
  • @GertB。我确实编辑了线程以使其更清晰,就像新线程一样。但它仍然告诉我线程在 30 多分钟后关闭。因为它不会收到答案,只会收到评论。如果我编辑问题,你能告诉我线程将重新打开多长时间,以便下次我不必重新发布。再次抱歉;(

标签: php laravel heroku caching


【解决方案1】:

[新更新] 您可以按照下面的链接进行完全相同的操作,但您需要将 Procfile 的部分从 composer warmup 修复为 composer run-script warmup .这将解决这个线程中的问题。 https://dev.to/autoidle/laravel-deployment-optimization-on-heroku-1hkc

composer.json:

    "scripts": {
       ...
       "warmup": [
           "@php artisan config:cache",
           "@php artisan route:cache",
           "@php artisan view:cache"
    ]
},

过程文件:

web: composer run-script warmup && heroku-php-apache2

enter image description here

【讨论】:

  • 请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。
【解决方案2】:

Heroku 使用ephemeral filesystem,这意味着在 dyno 运行时对文件系统的任何更改只会持续到该 dyno 关闭或重新启动。每个测功机都使用最新部署的文件系统的干净副本启动。这类似于有多少基于容器的系统(例如 Docker)在运行。

解决您的问题的方法是使用 Redis 作为缓存(也用于会话、队列等)

  1. 添加到您的 Heroku 环境: CACHE_DRIVER=redis

  2. composer require ext-json

  3. 将 Redis 安装为附加组件,例如:https://elements.heroku.com/addons/heroku-redis

【讨论】:

  • 谢谢。这对我以后有很大的帮助。但是在这个线程中,我找到了一种更简单的方法来解决问题。我几秒钟前编辑了答案。
猜你喜欢
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
  • 2021-04-02
  • 2021-11-16
  • 2020-01-06
  • 2018-06-30
相关资源
最近更新 更多