Laraveli tööjärjekordade haldamine Beanstalki ja Supervisoriga Ubuntu 16.04-s

Beanstalk on kiire ja lihtne tööjärjekord. See võimaldab teil asünkroonselt käivitada aeganõudvaid ülesandeid, nagu e-kirjade saatmine, ühenduse loomine väliste API-dega või piltide töötlemine. Seda tehes vähendate oma veebirakenduse latentsust. Laravel pakub karbist väljas tuge beanstalkd.

Selles õpetuses installime beanstalkd, seadistame Laraveli demorakenduse ja haldame järjekorratöötajaid Supervisori kaudu . Demorakendus saab Vultr API- st saadaolevate OS-ide loendi ja valib juhuslikult ühe.

Eeldatakse, et Supervisor on teie süsteemi juba installitud. Kui te seda ei tee, peaksite lugema järgmist õpetust Supervisori seadistamise kohta: Supervisori installimine ja konfigureerimine versioonis Ubuntu 16.04

Samuti eeldatakse, et teil on SSH-juurdepääs oma Vultri eksemplarile.

Beanstalki paigaldamine

Esimene samm, mida teha, on installimine beanstalkd.

sudo apt-get update
sudo apt-get install beanstalkd

Käivitage teenus.

sudo systemctl start beanstalkd

Samuti saate lubada teenuse käivitamise süsteemi initsialiseerimisel.

sudo systemctl enable beanstalkd

Kontrollige teenuse olekut järgmise käsuga.

sudo systemctl status beanstalkd

Vaikimisi beanstalkdkuulab pordis 11300. Beanstalk kasutab lihtsat tekstipõhist protokolli, mida on kirjeldatud selle githubi hoidlas . Saate selle protokolli testida, käivitades telnet.

telnet localhost 11300

Kirjutage järgmine ja vajutage ENTER.

list-tubes

Peaksite nägema serveris saadaolevate torude loendit:

OK 14
---
- default

Ühenduse sulgemiseks lihtsalt tippige quitja seejärel vajutage ENTER.

Beanstalkis olevad torud tähistavad tööjärjekordi. Beanstalk koosneb põhiliselt tootjatest , tarbijatest , töökohtadest ja torudest . Tootjad panevad töökohad torusse, mida suvaline arv tarbijaid tarbivad (töötlevad). Pange tähele, et nii tootjad kui ka tarbijad on lihtsalt Beanstalki serveri kliendid ja on üksteisest täiesti sõltumatud. Praktikas tähendab see, et Beanstalki kasutades saate oma töid luua oma PHP-rakenduses ja lasta neid töödelda näiteks NodeJS-i rakenduses. Õnneks võtab Laravel sellest kõigest kokku ja pakub meile väga lihtsat API-d tööde saatmiseks ja haldamiseks, nagu me järgmisena näeme.

Näidisprojekt

Näidisprojekti koostamiseks peame esmalt installima selle sõltuvused. Installime PHP ja Composeri.

sudo apt-get install php php-mbstring php-xml php-common php-zip composer

Nüüd looge projekt Laravel 5.5 põhjal.

composer create-project --prefer-dist laravel/laravel vultr "5.5.*"

Edasi cdhiljuti loodud kausta. Nüüdsest töötame selles kataloogis. Sellele kaustale võib hiljem viidata kui PROJECT_ROOT.

cd vultr/

Beanstalki kasutamiseks Laravelis peame installima veel ühe sõltuvuse, PHP Beanstalki kliendi.

composer require pda/pheanstalk ~3.0

Peame looma ka töökoha esinduse. Laravelis on see klass app/Jobskausta sees . Laravelil on konsoolikäsk, mis aitab meil tööklassi luua. Loome oma näidistöö.

php artisan make:job FindFavoriteOS

Värskendage app/Jobs/FindFavoriteOS.phpfaili järgmiselt.

<?php

namespace App\Jobs;

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

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

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        $rawData = file_get_contents('https://api.vultr.com/v1/os/list');
        $list = json_decode($rawData, true);
        shuffle($list);
        $key = array_rand($list);
        $favorite = $list[$key];
        Log::info('My Favorite OS is: ' . $favorite['name']);
    }
}

Käepidememeetod on see, mis tõhusalt täidetakse, kui töö on ära kasutatud. Siin hangime andmed Vultr API-st, valime juhuslikult OS-i ja kirjutame valitud OS-i logifaili. Logifail asub aadressil storage/logs/laravel.log.

Oleme Beanstalki juba installinud ja määratlenud selle teostatava töö. Nüüd on aeg käskida Laravelil kasutada Beanstalki vaiketööjärjekorrana. Kopeerige .envLaraveli installi pakutav vaikefail.

cp .env.example .env

Nüüd avage .envfail ja värskendage rida, kus järjekorra draiver on määratud.

QUEUE_DRIVER=beanstalkd

Lõpuks looge rakenduse võti.

php artisan key:generate

Oleme nüüd valmis töid Beanstalki tööjärjekorda saatma.

Lähetus ja jooksvad tööd

Laravelis töö ärasaatmine on üsna lihtne. Värskendage routes/web.phpfaili.

<?php

Route::get('/', function () {
    for ($i = 0; $i < 50; $i++) {
        \App\Jobs\FindFavoriteOS::dispatch();
    }

    return '50 Jobs dispatched!';
});

Vaatamata sellele, et meil ei soovitata sisseehitatud pakutavat serverit tootmises käitada, kasutame seda siin lühiduse huvides.

php artisan serve --host 0.0.0.0 --port 8000

Nüüd navigeerige veebibrauseris saidile http://[vultr-instance-ip]:8000. Näete järgmist teadet.

50 Jobs dispatched!

Avage oma serveriga uus SSH-ühendus ja meie projektijuures tehke järgmist.

php artisan queue:work --once

See on eeldatav väljund:

[2018-02-14 00:03:52] Processing: App\Jobs\FindFavoriteOS
[2018-02-14 00:03:53] Processed:  App\Jobs\FindFavoriteOS

Kinnitage, et logi loodi.

cat storage/logs/laravel.log

Ülevaataja seadistamine

Vältimaks vajadust järjekorda käsitsi töödelda, kasutame supervisord. Looge rakenduses järgmine programmi konfiguratsioon /etc/supervisor/conf.d/vultr.conf.

[program:vultr]
process_name=%(program_name)s_%(process_num)02d
command=php [PROJECT_ROOT]/artisan queue:work
autostart=true
autorestart=true
numprocs=8
redirect_stderr=true
stdout_logfile=/var/log/worker.log

Pange tähele, et Supervisori konfiguratsioonifaili sisestamise õige tee sõltub teie seadistustest. Samuti ärge unustage asendada [PROJECT_ROOT]täieliku teega PROJECT_ROOToma süsteemis.

Siin konfigureerime Supervisori automaatselt alustama järjekorra töötlemist ja skripti purunemise korral taaskäivitama. Pange tähele ka seda, et me ei loo mitte ühte töötajat, vaid 8 protsessi. Olenevalt teie rakendusest võite luua paljusid protsesse, mida vajalikuks peate.

Et lubada ülemusel meie töötajat hallata, sundige teda konfiguratsiooni uuesti lugema.

sudo supervisorctl reread
sudo supervisorctl update

Kui teenust Supervisor pole käivitatud, peate paljudel selle käivitama.

sudo systemctl start supervisord

Nüüd vaatame, kas töid töödeldakse.

tail -f storage/logs/laravel.log

Liikuge veebibrauseris saidile http://[vultr-instance-ip]:8000. Näete logisid, mida teie konsoolil genereeritakse.

Järeldus

Oleme edukalt konfigureerinud Laraveli rakenduse Beanstalki tööjärjekorrana kasutama. Samuti näitasime, kuidas kasutada Supervisorit töötajate juhtimiseks.

Jäta kommentaar

Masinate tõus: AI tegelikud rakendused

Masinate tõus: AI tegelikud rakendused

Tehisintellekt ei ole tulevik, see on siin, olevikus. Sellest blogist loe, kuidas tehisintellekti rakendused on mõjutanud erinevaid sektoreid.

DDOS-i rünnakud: lühike ülevaade

DDOS-i rünnakud: lühike ülevaade

Kas olete ka DDOS-i rünnakute ohver ja olete segaduses ennetusmeetodite osas? Oma päringute lahendamiseks lugege seda artiklit.

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Võib-olla olete kuulnud, et häkkerid teenivad palju raha, kuid kas olete kunagi mõelnud, kuidas nad sellist raha teenivad? arutleme.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Kas soovite näha Google'i revolutsioonilisi leiutisi ja seda, kuidas need leiutised muutsid iga inimese elu tänapäeval? Seejärel lugege ajaveebi, et näha Google'i leiutisi.

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Isejuhtivate autode kontseptsioon tehisintellekti abil teedele jõudmiseks on meil juba mõnda aega unistus. Kuid vaatamata mitmele lubadusele pole neid kusagil näha. Lisateabe saamiseks lugege seda ajaveebi…

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Kuna teadus areneb kiiresti, võttes üle suure osa meie jõupingutustest, suureneb ka oht, et allume seletamatule singulaarsusele. Loe, mida singulaarsus meie jaoks tähendada võiks.

Suurandmete viitearhitektuuri kihtide funktsioonid

Suurandmete viitearhitektuuri kihtide funktsioonid

Lugege ajaveebi, et kõige lihtsamal viisil teada saada Big Data Architecture'i erinevaid kihte ja nende funktsioone.

Andmesalvestuse areng – infograafik

Andmesalvestuse areng – infograafik

Andmete säilitamise meetodid on arenenud alates andmete sünnist. See ajaveeb käsitleb infograafiku alusel andmete salvestamise arengut.

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

Selles digipõhises maailmas on nutikad koduseadmed muutunud elu oluliseks osaks. Siin on mõned nutikate koduseadmete hämmastavad eelised, mis muudavad meie elu elamisväärseks ja lihtsamaks.

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

Hiljuti andis Apple välja macOS Catalina 10.15.4 täiendusvärskenduse probleemide lahendamiseks, kuid tundub, et värskendus põhjustab rohkem probleeme, mille tulemuseks on Maci masinate tellimine. Lisateabe saamiseks lugege seda artiklit