php 部署到Heroku时缓存文件出现Laravel问题

z9gpfhce  于 2022-11-21  发布在  PHP
关注(0)|答案(2)|浏览(158)

我的应用程序正在使用laravel 8。我将它从github部署到heroku,并希望运行以下命令:

php artisan optimize

但是我不知道如何在heroku中运行这个命令,如果这个命令在我的应用程序中创建了缓存文件,heroku会在特定时间后删除它们,因为它们不是从github部署的永久文件。任何人都知道如何处理这个问题,请告诉我该怎么做。谢谢!
P/S:我试图做像下面的链接,但它没有在我的应用程序中创建任何缓存文件。https://dev.to/autoidle/laravel-deployment-optimization-on-heroku-1hkc
[new更新]问题解决了。只要按照上面的链接和我的答案在下面。

nfs0ujit

nfs0ujit1#

Heroku使用一个临时文件系统,这意味着在dyno运行时对文件系统的任何更改都只会持续到dyno关闭或重新启动。每个dyno都使用最近部署的文件系统的干净副本启动。这与许多基于容器的系统(如Docker)的操作类似。
解决这个问题的方法是使用Redis作为缓存(也可以用于会话、队列等)
1.添加到您的Heroku环境:CACHE_DRIVER=redis

  1. composer require ext-json
    1.安装Redis作为附加组件,例如:https://elements.heroku.com/addons/heroku-redis
fquxozlt

fquxozlt2#

[new update]您可以按照下面的链接执行完全相同的操作,但您需要将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

相关问题