📜  laravel 队列工作计划 cpanel - PHP (1)

📅  最后修改于: 2023-12-03 14:43:50.542000             🧑  作者: Mango

Laravel 队列工作计划 cPanel - PHP

Laravel 是一个PHP Web应用程序框架,它由Taylor Otwell为了更好地实现自己的Web应用程序开发而创建的。Laravel 为 Web 开发提供了一些易于使用的工具和库,例如队列、任务计划、路由和模板引擎。

队列

队列在Web应用程序开发中非常重要。队列是处理后台任务的最简单和最有效的方式之一。Laravel 提供了一个良好的队列系统,允许开发人员使用多种驱动器,例如Redis、Beanstalkd或Amazon SQS。

Laravel 队列驱动

Laravel 队列可以使用多种驱动程序。默认情况下,队列使用「sync」驱动程序,这意味着队列作业将在当前请求的生命周期内同步执行。以下是一些可用的队列驱动程序:

  • Database
  • Redis
  • Beanstalkd
  • Amazon SQS
  • Null (for testing)
Laravel 队列使用示例

以下是Laravel队列的示例:

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class SendEmail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $user;

    /**
     * Create a new job instance.
     *
     * @param  User  $user
     * @return void
     */
    public function __construct(User $user)
    {
        $this->user = $user;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        Mail::to($this->user->email)->send(new WelcomeEmail($this->user));
    }
}

在上面的示例中,我们使用了Laravel的快捷方式来创建一个队列任务。我们通过构造函数注入一个用户对象来初始化这个任务。任务的主要功能是发送欢迎电子邮件给用户。

Laravel 队列工作计划

在Laravel中,开发人员可以使用任务计划程序执行后台任务。Laravel的任务计划程序是基于Linux的Cron工具的。通过计划任务,开发人员可以使其应用程序自动执行某些操作。

下面是Laravel任务计划程序的示例:

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        //
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        // 每五分钟清理一次日志文件
        $schedule->command('log:clear')->everyFiveMinutes();

        // 每天早上7:00发送一条问候语
        $schedule->call(function () {
            DB::table('greetings')->insert(['text' => 'Good morning!']);
        })->dailyAt('07:00');
    }

    /**
     * Register the Closure based commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        require base_path('routes/console.php');
    }
}

在上面的示例中,我们定义了两个任务:清理日志文件和发送问候语。第一个任务将在每五分钟内运行一次,第二个任务将在每天早上7:00运行一次。

使用 Laravel 队列工作计划 cPanel

cPanel是一个Web主机管理面板,可以让用户轻松管理自己的Web主机。它提供了一个简单的界面,使用户可以轻松安装和管理Web应用程序。cPanel还提供了一个Web界面,用于管理任务计划。

在Laravel应用程序中使用cPanel管理任务计划非常简单。只需创建一个新的cron作业,然后将它指向Laravel艺术家的schedule:run命令即可。以下是一个简单的cron作业的示例:

*/5 * * * * php /home/username/path/to/artisan schedule:run >> /dev/null 2>&1

在上面的示例中,cron作业将每5分钟运行一次。该作业将调用Laravel的优秀艺术家,执行它的计划任务。/dev/null 2>&1这个部分则将输出发送到空设备,以避免产生无用的输出。

总结

Laravel队列是后台任务的完美解决方案。对于需要长时间运行的任务,队列可以使Web应用程序更加可靠,高效。cPanel提供了一个简单的Web界面,以帮助开发人员管理其任务计划。