要在 Laravel 中设置定时任务并使用 PM2 进行管理

2023-05-31 13:26:58 浏览数 (4)

要在 Laravel 中设置定时任务并使用 PM2 进行管理,这是个好想法,

以下步骤:

  1. 在 Laravel 中创建定时任务

使用 php artisan make:command 命令创建一个新的 Artisan 命令,该命令将执行您希望在后台运行的代码。例如,您可能想要每分钟调用一个 API 来更新数据库中的数据。

代码语言:shell复制
php artisan make:command FetchApiData

然后,在新创建的 FetchApiData 命令类的 handle 方法中编写您需要执行的代码。

代码语言:php复制
public function handle()

{

    // Your code here

}

接下来,在 AppConsoleKernel.php 文件中注册您的定时任务。这可以通过在 $schedule 属性中添加任务来完成。例如:

代码语言:php复制
protected function schedule(Schedule $schedule)

{

    $schedule->command('fetch:api')->everyMinute();

}

这个例子中将会每分钟执行 FetchApiData 命令。

  1. 安装 PM2

安装 Node.js 后,使用 npm 或 yarn 安装 PM2。

代码语言:shell复制
npm install pm2 -g
  1. 创建 PM2 配置文件

在 Laravel 项目根目录中创建一个新的 pm2.config.js 文件,并将以下内容添加到文件中:

代码语言:javascript复制
module.exports = {

  apps: [

    {

      name: "Laravel Task Scheduler",

      script: "artisan",

      args: "schedule:run",

      watch: true,

      ignore_watch: ["storage"],

      autorestart: true,

      env: {

        APP_ENV: "production",

      },

    },

  ],

};

这个配置文件将启动 Laravel 的 Artisan 命令,并使 PM2 每分钟运行一次 php artisan schedule:run 命令。

  1. 启动 PM2 进程

使用以下命令启动 PM2 进程:

代码语言:shell复制
pm2 start pm2.config.js

这将使用您的 pm2.config.js 文件中的配置启动一个新的 PM2 进程。

现在,当您的服务器运行时,Laravel 的定时任务将由 PM2 管理,并且每分钟都会自动运行。您可以使用 pm2 logs 命令来查看日志,并使用 pm2 stop 命令停止进程。

0 人点赞