„Laravel“ darbo eilių valdymas naudojant „Beanstalk“ ir „Supervisor“ Ubuntu 16.04

„Beanstalk“ yra greita ir paprasta darbo eilė. Tai leidžia asinchroniškai vykdyti daug laiko reikalaujančias užduotis, pvz., siųsti el. laiškus, prisijungti prie išorinių API arba apdoroti vaizdus. Tai darydami sumažinsite žiniatinklio programos delsą. „Laravel“ teikia tiesioginį palaikymą beanstalkd.

Šiame vadove mes įdiegsime beanstalkd, nustatysime demonstracinę Laravel programą ir valdysime eilės darbuotojus per Supervisor . Demonstracinė programa gaus galimų OS sąrašą iš Vultr API ir atsitiktinai pasirinks vieną.

Daroma prielaida, kad jūsų sistemoje jau įdiegtas Supervisor. Jei to nepadarėte, turėtumėte perskaityti šią pamoką, kaip nustatyti „Supervisor“: „Supervisor“ diegimas ir konfigūravimas „Ubuntu 16.04“

Taip pat daroma prielaida, kad turite SSH prieigą prie „Vultr“ egzemplioriaus.

„Beanstalk“ diegimas

Pirmas žingsnis, kurį reikia padaryti, yra įdiegti beanstalkd.

sudo apt-get update
sudo apt-get install beanstalkd

Pradėkite paslaugą.

sudo systemctl start beanstalkd

Taip pat galite įgalinti paslaugą paleisti sistemą inicijavus.

sudo systemctl enable beanstalkd

Patikrinkite paslaugos būseną išduodami šią komandą.

sudo systemctl status beanstalkd

Pagal numatytuosius nustatymus beanstalkdklausosi prievado 11300. „Beanstalk“ naudoja paprastą teksto protokolą, aprašytą „github“ saugykloje . Galite išbandyti jo protokolą paleisdami telnet.

telnet localhost 11300

Parašykite toliau pateiktą informaciją ir paspauskite ENTER.

list-tubes

Turėtumėte pamatyti serveryje esančių vamzdžių sąrašą:

OK 14
---
- default

Norėdami uždaryti ryšį, tiesiog įveskite quitir paspauskite ENTER.

„Beanstalk“ vamzdeliai žymi darbo eiles. Beanstilk iš esmės susideda iš gamintojų , vartotojų , darbo vietų ir vamzdžių . Gamintojai sudeda darbo vietas į vamzdelį, kurį sunaudos (perdirbs) bet koks vartotojų skaičius. Atminkite, kad tiek gamintojai, tiek vartotojai yra tiesiog „Beanstalk“ serverio klientai ir yra visiškai nepriklausomi vienas nuo kito. Praktiškai tai reiškia, kad naudodami „Beanstalk“ galite sukurti savo užduotis savo PHP programoje ir apdoroti, pavyzdžiui, „NodeJS“ programoje. Laimei, Laravel visa tai abstrahuoja ir suteikia mums labai paprastą API, skirtą darbams išsiųsti ir tvarkyti, kaip matysime toliau.

Projekto pavyzdys

Norėdami sukurti pavyzdinį projektą, pirmiausia turime įdiegti jo priklausomybes. Mes ketiname įdiegti PHP ir Composer.

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

Dabar sukurkite projektą, pagrįstą Laravel 5.5.

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

Toliau cdį neseniai sukurtą aplanką. Nuo šiol dirbsime šiame kataloge. Šis aplankas vėliau gali būti nurodytas kaip PROJECT_ROOT.

cd vultr/

Norėdami naudoti „Beanstalk“ „Laravel“, turime įdiegti dar vieną priklausomybę – „PHP Beanstalk“ klientą.

composer require pda/pheanstalk ~3.0

Taip pat turime sukurti darbo atstovybę. „Laravel“ tai yra klasė app/Jobsaplanke. Laravel turi konsolės komandą, kuri padeda mums sukurti darbo klasę. Sukurkime savo darbo pavyzdį.

php artisan make:job FindFavoriteOS

Atnaujinkite app/Jobs/FindFavoriteOS.phpfailą į toliau pateiktą.

<?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']);
    }
}

Rankenos metodas yra tai, kas bus veiksmingai atlikta, kai darbas bus sunaudotas. Čia gauname duomenis iš Vultr API, atsitiktinai pasirenkame OS ir įrašome pasirinktą OS į žurnalo failą. Žurnalo failas yra adresu storage/logs/laravel.log.

Mes jau įdiegėme „Beanstalk“ ir apibrėžėme užduotį, kurią jis turi atlikti. Dabar laikas pasakyti „Laravel“ naudoti „Beanstalk“ kaip numatytąją darbo eilę. Nukopijuokite numatytąjį .envLaravel diegimo failą.

cp .env.example .env

Dabar atidarykite .envfailą ir atnaujinkite eilutę, kurioje nurodyta eilės tvarkyklė.

QUEUE_DRIVER=beanstalkd

Galiausiai sugeneruokite programos raktą.

php artisan key:generate

Dabar esame pasirengę siųsti darbus į „Beanstalk“ darbų eilę.

Siuntimo ir vykdymo darbai

Darbo išsiuntimas Laravelyje yra gana paprastas. Atnaujinkite routes/web.phpfailą.

<?php

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

    return '50 Jobs dispatched!';
});

Nepaisant to, kad nerekomenduojama gamyboje paleisti įtaisytąjį pateiktą serverį, mes jį čia naudosime trumpumo sumetimais.

php artisan serve --host 0.0.0.0 --port 8000

Dabar žiniatinklio naršyklėje eikite į http://[vultr-instance-ip]:8000. Pamatysite šį pranešimą.

50 Jobs dispatched!

Atidarykite naują SSH ryšį su savo serveriu ir mūsų projekto šaknyje atlikite šiuos veiksmus.

php artisan queue:work --once

Tai yra laukiama produkcija:

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

Patvirtinkite, kad žurnalas buvo sugeneruotas.

cat storage/logs/laravel.log

Prižiūrėtojo konfigūravimas

Kad nereikėtų rankiniu būdu apdoroti eilės, naudosime supervisord. Sukurkite šią programos konfigūraciją /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

Atkreipkite dėmesį, kad teisingas kelias, kaip įdėti prižiūrėtojo konfigūracijos failą, priklausys nuo jūsų sąrankos. Be to, nepamirškite pakeisti [PROJECT_ROOT]visu keliu į PROJECT_ROOTjūsų sistemoje.

Čia mes sukonfigūruojame „Supervisor“, kad jis automatiškai pradėtų apdoroti eilę ir, jei scenarijus nutrūktų, paleisti jį iš naujo. Taip pat atkreipkite dėmesį, kad mes instantiuojame ne vieną darbuotoją, o 8 procesus. Priklausomai nuo jūsų taikomosios programos, galite laisvai kurti momentinius momentus, kad ir kiek daug procesų jums atrodo būtini.

Kad prižiūrėtojas galėtų valdyti mūsų darbuotoją, priverskite jį iš naujo perskaityti konfigūraciją.

sudo supervisorctl reread
sudo supervisorctl update

Jei Supervisor paslauga nebuvo paleista, daugelis turite ją paleisti.

sudo systemctl start supervisord

Dabar pažiūrėkime, ar darbai apdorojami.

tail -f storage/logs/laravel.log

Žiniatinklio naršyklėje eikite į http://[vultr-instance-ip]:8000. Pamatysite konsolėje generuojamus žurnalus.

Išvada

Sėkmingai sukonfigūravome „Laravel“ programą, kad „Beanstalk“ būtų naudojama kaip darbo eilė. Taip pat pademonstravome, kaip naudoti Supervisor valdant darbuotojus.


Įdiekite „Plesk“ „CentOS 7“.

Įdiekite „Plesk“ „CentOS 7“.

Naudojate kitą sistemą? Plesk yra patentuotas žiniatinklio prieglobos valdymo skydelis, leidžiantis vartotojams administruoti savo asmenines ir (arba) klientų svetaines, duomenų bazes

Nustatykite „Cacti“ naudodami „Debian Jessie“.

Nustatykite „Cacti“ naudodami „Debian Jessie“.

Įvadas Cacti yra atvirojo kodo stebėjimo ir grafikų sudarymo įrankis, visiškai pagrįstas RRD duomenimis. Naudodami „Cacti“ galite stebėti beveik bet kokio tipo įrenginius

Įdiekite „Lets Encrypt SSL“ „WordPress“ programoje vienu spustelėjimu

Įdiekite „Lets Encrypt SSL“ „WordPress“ programoje vienu spustelėjimu

Įvadas „Lets Encrypt“ yra sertifikatų išdavimo tarnyba, siūlanti nemokamus TLS/SSL sertifikatus. Diegimo procesą supaprastina Certbot,

Kaip nustatyti „Tekkit Classic“ serverį „Ubuntu 16.10“.

Kaip nustatyti „Tekkit Classic“ serverį „Ubuntu 16.10“.

Naudojate kitą sistemą? Kas yra Tekkit Classic? „Tekkit Classic“ yra visų žinomo ir mėgstamo žaidimo modifikacijų paketas; Minecraft. Jame yra keletas ver

„Debian Wheezy“ nustatykite „iRedMail“.

„Debian Wheezy“ nustatykite „iRedMail“.

Naudojate kitą sistemą? Ši pamoka parodys, kaip įdiegti grupinę programinę įrangą iRedMail naujai įdiegus Debian Wheezy. Turėtumėte naudoti tarnavimą

Jekyll tinklaraščio kūrimas Ubuntu 16.04

Jekyll tinklaraščio kūrimas Ubuntu 16.04

Naudojate kitą sistemą? „Jekyll“ yra puiki „WordPress“ alternatyva dienoraščių rašymui ar turinio dalijimuisi. Tam nereikia jokių duomenų bazių ir tai labai paprasta

Kaip įdiegti „Squid“ tarpinį serverį „CentOS“.

Kaip įdiegti „Squid“ tarpinį serverį „CentOS“.

Squid yra populiari nemokama „Linux“ programa, leidžianti sukurti persiuntimo žiniatinklio tarpinį serverį. Šiame vadove pamatysite, kaip įdiegti „Squid“ „CentOS“, kad paverstumėte jus

Kaip įdiegti „Lighttpd“ (LLMP Stack) „CentOS 6“.

Kaip įdiegti „Lighttpd“ (LLMP Stack) „CentOS 6“.

Įvadas Lighttpd yra „Apache“ šakutė, skirta daug mažiau išteklių imti. Jis yra lengvas, todėl jo pavadinimas ir yra gana paprastas naudoti. Įdiegti

Trys nemokami serverio valdymo skydeliai (greitasis diegimas)

Trys nemokami serverio valdymo skydeliai (greitasis diegimas)

1. Virtualmin/Webmin Virtualmin yra galingas ir lankstus interneto prieglobos valdymo skydelis, skirtas Linux ir UNIX sistemoms, pagrįstas gerai žinoma atvirojo kodo žiniatinklio baze

Yii programos nustatymas Ubuntu 14.04

Yii programos nustatymas Ubuntu 14.04

Yii yra PHP sistema, leidžianti greičiau ir lengviau kurti programas. „Yii“ įdiegimas „Ubuntu“ yra nesudėtingas, nes sužinosite tiksliai

Ekrano naudojimas Ubuntu 14.04

Ekrano naudojimas Ubuntu 14.04

Ekranas yra programa, leidžianti kelis kartus naudoti terminalo seansus viename lange. Tai leidžia imituoti kelis terminalo langus, kur tai ma

Logrotate naudojimas žurnalo failams tvarkyti

Logrotate naudojimas žurnalo failams tvarkyti

Įvadas Logrotate yra „Linux“ programa, supaprastinanti žurnalo failų administravimą. Paprastai jis veikia kartą per dieną per cron darbą ir tvarko žurnalų bazę

Statinio tinklo ir IPv6 konfigūravimas CentOS 7

Statinio tinklo ir IPv6 konfigūravimas CentOS 7

VULTR neseniai atliko pakeitimus, ir dabar viskas turėtų veikti gerai, kai įjungta „NetworkManager“. Jei norite išjungti

„Icinga2“ modifikavimas, kad būtų naudojamas pagrindinis / kliento modelis „CentOS 6“ arba „CentOS 7“.

„Icinga2“ modifikavimas, kad būtų naudojamas pagrindinis / kliento modelis „CentOS 6“ arba „CentOS 7“.

Icinga2 yra galinga stebėjimo sistema, o kai naudojama pagrindinio kliento modelyje, ji gali pakeisti NRPE pagrįstų stebėjimo patikrų poreikį. Meistras-klientas

Kaip įdiegti Apache Cassandra 3.11.x Ubuntu 16.04 LTS

Kaip įdiegti Apache Cassandra 3.11.x Ubuntu 16.04 LTS

Naudojate kitą sistemą? Apache Cassandra yra nemokama ir atviro kodo NoSQL duomenų bazių valdymo sistema, skirta užtikrinti mastelio keitimą, hig.

Kaip įdiegti „Apache Cassandra 3.11.x“ „CentOS 7“.

Kaip įdiegti „Apache Cassandra 3.11.x“ „CentOS 7“.

Naudojate kitą sistemą? Apache Cassandra yra nemokama ir atviro kodo NoSQL duomenų bazių valdymo sistema, skirta užtikrinti mastelio keitimą, hig.

Kaip įdiegti MODX Revolution Ubuntu 16.04 LAMP VPS

Kaip įdiegti MODX Revolution Ubuntu 16.04 LAMP VPS

Naudojate kitą sistemą? MODX Revolution yra greita, lanksti, keičiamo dydžio, nemokama ir atviro kodo, įmonės lygio turinio valdymo sistema (TVS), parašyta i.

Kaip įdiegti „Mattermost 4.1“ „CentOS 7“.

Kaip įdiegti „Mattermost 4.1“ „CentOS 7“.

Naudojate kitą sistemą? Mattermost yra atvirojo kodo, savarankiškai priglobta alternatyva Slack SAAS pranešimų paslaugai. Kitaip tariant, naudodami Mattermost, jūs apytiksliai

Kaip įdiegti MODX Revolution FreeBSD 11 FAMP VPS

Kaip įdiegti MODX Revolution FreeBSD 11 FAMP VPS

Naudojate kitą sistemą? MODX Revolution yra greita, lanksti, keičiamo dydžio atvirojo kodo, įmonės lygio turinio valdymo sistema (TVS), parašyta PHP. Tai i

Leidžia šifruoti Plesk

Leidžia šifruoti Plesk

„Plesk“ valdymo skydelyje yra labai graži „Lets Encrypt“ integracija. „Lets Encrypt“ yra vienas iš vienintelių SSL teikėjų, išduodančių visus sertifikatus

Mašinų augimas: AI pritaikymas realiame pasaulyje

Mašinų augimas: AI pritaikymas realiame pasaulyje

Dirbtinis intelektas nėra ateityje, jis čia, dabartyje Šiame tinklaraštyje Skaitykite, kaip dirbtinio intelekto programos paveikė įvairius sektorius.

DDOS atakos: trumpa apžvalga

DDOS atakos: trumpa apžvalga

Ar taip pat esate DDOS atakų auka ir esate sumišęs dėl prevencijos metodų? Perskaitykite šį straipsnį, kad išspręstumėte savo užklausas.

Ar kada nors susimąstėte, kaip įsilaužėliai uždirba pinigų?

Ar kada nors susimąstėte, kaip įsilaužėliai uždirba pinigų?

Galbūt girdėjote, kad įsilaužėliai uždirba daug pinigų, bet ar kada susimąstėte, kaip jie uždirba tokius pinigus? padiskutuokime.

Revoliuciniai „Google“ išradimai, kurie palengvins jūsų gyvenimą.

Revoliuciniai „Google“ išradimai, kurie palengvins jūsų gyvenimą.

Ar norite pamatyti revoliucinius „Google“ išradimus ir kaip šie išradimai pakeitė kiekvieno žmogaus gyvenimą šiandien? Tada skaitykite tinklaraštį, kad pamatytumėte „Google“ išradimus.

Penktadienio esminiai dalykai: kas atsitiko AI varomiems automobiliams?

Penktadienio esminiai dalykai: kas atsitiko AI varomiems automobiliams?

Savavaledžių automobilių koncepcija, kuri išvažiuotų į kelius su dirbtinio intelekto pagalba, yra svajonė, kurią jau kurį laiką svajojame. Tačiau nepaisant kelių pažadų, jų niekur nematyti. Skaitykite šį tinklaraštį, kad sužinotumėte daugiau…

Technologinis išskirtinumas: tolima žmogaus civilizacijos ateitis?

Technologinis išskirtinumas: tolima žmogaus civilizacijos ateitis?

Kadangi mokslas sparčiai vystosi, perimdamas daug mūsų pastangų, taip pat didėja rizika, kad pateksime į nepaaiškinamą singuliarumą. Skaitykite, ką mums gali reikšti išskirtinumas.

Duomenų saugojimo raida – infografika

Duomenų saugojimo raida – infografika

Duomenų saugojimo metodai gali būti tobulinami nuo pat Duomenų gimimo. Šiame tinklaraštyje, remiantis infografika, aprašoma duomenų saugojimo raida.

Didžiųjų duomenų atskaitos architektūros sluoksnių funkcijos

Didžiųjų duomenų atskaitos architektūros sluoksnių funkcijos

Skaitykite tinklaraštį, kad paprasčiausiai sužinotumėte apie skirtingus didžiųjų duomenų architektūros sluoksnius ir jų funkcijas.

6 nuostabūs išmaniųjų namų įrenginių privalumai

6 nuostabūs išmaniųjų namų įrenginių privalumai

Šiame skaitmeniniu būdu pagrįstame pasaulyje išmanieji namų įrenginiai tapo svarbia gyvenimo dalimi. Štai keletas nuostabių išmaniųjų namų įrenginių privalumų, kaip jie daro mūsų gyvenimą vertą gyventi ir paprastesnį.

„macOS Catalina 10.15.4“ priedo atnaujinimas kelia daugiau problemų, nei sprendžia

„macOS Catalina 10.15.4“ priedo atnaujinimas kelia daugiau problemų, nei sprendžia

Neseniai „Apple“ išleido „macOS Catalina 10.15.4“ priedą, skirtą problemoms išspręsti, tačiau atrodo, kad dėl atnaujinimo kyla daugiau problemų, dėl kurių „Mac“ įrenginiai blokuojami. Norėdami sužinoti daugiau, perskaitykite šį straipsnį