@nathanjdunn
👋
@nathanjdunn
Polls queue for jobs
Queue System (Redis)
Pushes jobs to queue
Worker (Laravel App)
Application (Laravel App)
<?php
namespace App\Http\Controllers;
use App\Jobs\RenderVideo;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class VideosController extends Controller
{
/**
* Store a new podcast.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
// Render video...
RenderVideo::dispatch($video);
}
}<?php
namespace App\Jobs;
use App\VideoProcessor;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class RenderVideo implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* @var Video
*/
protected $video;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(Video $video)
{
$this->video = $video;
}
/**
* Execute the job.
*
* @return void
*/
public function handle(VideoProcessor $processor)
{
// Process uploaded video...
}
}
composer require laravel/horizon
php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider"php artisan horizonHorizon::auth(function ($request) {
// return true / false;
});Horizon::routeMailNotificationsTo('example@example.com');
Horizon::routeSlackNotificationsTo('slack-webhook-url', '#channel');
Horizon::routeSmsNotificationsTo('15556667777');Live Demo Time