Að stjórna Laravel vinnuröðum með Beanstalk og umsjónarmanni á Ubuntu 16.04

Beanstalk er hröð og einföld vinnuröð. Það gerir þér kleift að keyra tímafrek verkefni ósamstillt, eins og að senda tölvupóst, tengjast ytri API eða vinna úr myndum. Með því að gera það muntu draga úr biðtíma vefforrita. Laravel veitir beinan stuðning fyrir beanstalkd.

Í þessari kennslu munum við setja upp beanstalkd, setja upp sýnishorn af Laravel forriti og stjórna biðröðunum í gegnum Supervisor . Kynningarforritið mun fá lista yfir tiltæk stýrikerfi frá Vultr API og velja einn af handahófi.

Það er gert ráð fyrir að þú hafir nú þegar Supervisor uppsett á kerfinu þínu. Ef þú gerir það ekki, ættir þú að lesa eftirfarandi kennslu um hvernig á að setja upp Supervisor: Uppsetning og stilla Supervisor á Ubuntu 16.04

Það er líka gert ráð fyrir að þú hafir SSH aðgang að Vultr tilvikinu þínu.

Að setja upp Beanstalk

Fyrsta skrefið sem þarf að taka er að setja upp beanstalkd.

sudo apt-get update
sudo apt-get install beanstalkd

Byrjaðu þjónustuna.

sudo systemctl start beanstalkd

Þú gætir líka virkjað þjónustuna til að hefjast við frumstillingu kerfisins.

sudo systemctl enable beanstalkd

Athugaðu þjónustustöðuna með því að gefa út eftirfarandi skipun.

sudo systemctl status beanstalkd

Sjálfgefið beanstalkdhlustar á portið 11300. Beanstalk notar einfalda textatengda siðareglur sem lýst er í github geymslunni . Þú getur prófað samskiptareglur þess með því að keyra telnet.

telnet localhost 11300

Skrifaðu eftirfarandi og ýttu á ENTER.

list-tubes

Þú ættir að sjá lista yfir rör sem eru tiltækar á þjóninum:

OK 14
---
- default

Til að loka tengingunni quitskaltu einfaldlega slá inn og ýta síðan á ENTER.

Rör í Beanstalk tákna vinnuraðir. Beanstalk er í grundvallaratriðum samsett af framleiðendum , neytendum , störfum og rörum . Framleiðendur setja störf í rör til að neyta (vinnsla) af hvaða fjölda neytenda sem er. Athugaðu að bæði framleiðendur og neytendur eru einfaldlega viðskiptavinir Beanstalk netþjónsins og eru algjörlega óháðir hver öðrum. Í raun þýðir þetta að með því að nota Beanstalk geturðu framleitt störf þín í PHP forritinu þínu og látið vinna úr því í NodeJS appi til dæmis. Sem betur fer tekur Laravel allt þetta saman og gefur okkur mjög einfalt API til að senda og meðhöndla störf, eins og við munum sjá næst.

Dæmi um verkefni

Til að byggja upp sýnishornsverkefnið okkar þurfum við fyrst að setja upp ósjálfstæði þess. Við ætlum að setja upp PHP og Composer.

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

Búðu til verkefnið byggt á Laravel 5.5.

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

Næst cdinn í nýlega búna möppuna. Við munum vinna í þessari möppu héðan í frá. Hægt er að vísa í þessa möppu síðar sem PROJECT_ROOT.

cd vultr/

Til að nota Beanstalk í Laravel þurfum við að setja upp eina háð í viðbót, PHP Beanstalk biðlarann.

composer require pda/pheanstalk ~3.0

Við þurfum líka að búa til starfsfulltrúa. Í Laravel er þetta flokkur inni í app/Jobsmöppunni. Laravel er með stjórnborðsskipun til að hjálpa okkur að búa til vinnuflokk. Við skulum búa til sýnishorn Jobs okkar.

php artisan make:job FindFavoriteOS

Uppfærðu app/Jobs/FindFavoriteOS.phpskrána í eftirfarandi.

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

Handfangsaðferðin er það sem verður í raun framkvæmt þegar verkið er neytt. Hér sækjum við gögn úr Vultr API, veljum stýrikerfi af handahófi og skrifum valið stýrikerfi í annálaskrána. Notkunarskráin er staðsett á storage/logs/laravel.log.

Við höfum þegar sett upp Beanstalk og skilgreint starfið sem það á að framkvæma. Nú er kominn tími til að segja Laravel að nota Beanstalk sem sjálfgefna vinnuröð. Afritaðu sjálfgefna .envskrána sem Laravel uppsetningin veitir.

cp .env.example .env

Opnaðu nú .envskrána og uppfærðu línuna þar sem biðröð driverinn er tilgreindur.

QUEUE_DRIVER=beanstalkd

Að lokum skaltu búa til forritslykil.

php artisan key:generate

Við erum nú tilbúin til að senda störf í Beanstalk vinnuröðina.

Senda og keyra störf

Það er frekar einfalt að senda starf í Laravel. Uppfærðu routes/web.phpskrána.

<?php

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

    return '50 Jobs dispatched!';
});

Þrátt fyrir að ekki sé mælt með því að keyra innbyggða þjóninn sem fylgir með í framleiðslu munum við nota hann hér til að styttast í.

php artisan serve --host 0.0.0.0 --port 8000

Farðu nú í vafra að http://[vultr-instance-ip]:8000. Þú munt sjá eftirfarandi skilaboð.

50 Jobs dispatched!

Opnaðu nýja SSH tengingu við netþjóninn þinn og inni í verkefnisrót okkar, framkvæmdu eftirfarandi.

php artisan queue:work --once

Þetta er væntanleg framleiðsla:

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

Staðfestu að skráin hafi verið búin til.

cat storage/logs/laravel.log

Að stilla yfirmann

Til að forðast að þurfa að vinna úr biðröðinni handvirkt munum við nota supervisord. Búðu til eftirfarandi forritsstillingar í /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

Taktu eftir því að rétta leiðin til að setja yfirmann stillingarskrána fer eftir uppsetningu þinni. Mundu líka að skipta út [PROJECT_ROOT]með fullri leið að PROJECT_ROOTkerfinu þínu.

Hér erum við að stilla Supervisor til að byrja sjálfkrafa að vinna úr biðröðinni og, ef handritið bilar, til að endurræsa það. Athugaðu líka að við erum ekki að stofna einn starfsmann heldur 8 ferla. Þér er frjálst að sýna fram á hversu mörg ferli sem þú telur nauðsynleg eftir umsókn þinni.

Til að leyfa yfirmanni að stjórna starfsmanninum okkar, neyða hann til að endurlesa stillingar sínar.

sudo supervisorctl reread
sudo supervisorctl update

Ef Supervisor þjónustan hefur ekki verið hafin þarftu margir að hefja hana.

sudo systemctl start supervisord

Nú skulum við sjá hvort störfin séu í vinnslu.

tail -f storage/logs/laravel.log

Í vafra skaltu fletta að http://[vultr-instance-ip]:8000. Þú munt sjá að annálarnir eru búnir til á vélinni þinni.

Niðurstaða

Við höfum stillt Laravel forrit til að nota Beanstalk sem vinnuröð. Einnig sýndum við hvernig á að nota Supervisor til að stjórna starfsmönnum.


Settu upp Cacti á Debian Jessie

Settu upp Cacti á Debian Jessie

Inngangur Cacti er opinn vöktunar- og grafatól sem byggir að fullu á RRD gögnum. Í gegnum Cacti geturðu fylgst með næstum hvers kyns tækjum

Settu upp Lets Encrypt SSL á WordPress appi með einum smelli

Settu upp Lets Encrypt SSL á WordPress appi með einum smelli

Inngangur Lets Encrypt er vottunaryfirvaldsþjónusta sem býður upp á ókeypis TLS/SSL vottorð. Uppsetningarferlið er einfaldað af Certbot,

Hvernig á að setja upp Tekkit Classic Server á Ubuntu 16.10

Hvernig á að setja upp Tekkit Classic Server á Ubuntu 16.10

Að nota annað kerfi? Hvað er Tekkit Classic? Tekkit Classic er modpack fyrir leikinn sem allir þekkja og elska; Minecraft. Það inniheldur eitthvað af ver

Settu upp iRedMail á Debian Wheezy

Settu upp iRedMail á Debian Wheezy

Að nota annað kerfi? Þessi kennsla mun sýna þér hvernig á að setja upp hópbúnaðinn iRedMail á nýrri uppsetningu á Debian Wheezy. Þú ættir að nota þjóna

Að búa til Jekyll blogg á Ubuntu 16.04

Að búa til Jekyll blogg á Ubuntu 16.04

Að nota annað kerfi? Jekyll er frábær valkostur við WordPress til að blogga eða deila efni. Það krefst enga gagnagrunna og það er mjög auðvelt i

Hvernig á að setja upp og stilla PHP 7.0 eða PHP 7.1 á Ubuntu 16.04

Hvernig á að setja upp og stilla PHP 7.0 eða PHP 7.1 á Ubuntu 16.04

PHP og tengdir pakkar eru algengustu íhlutirnir þegar vefþjónn er notaður. Í þessari grein munum við læra hvernig á að setja upp PHP 7.0 eða PHP 7.1 o

Hvernig á að setja upp Squid Proxy á CentOS

Hvernig á að setja upp Squid Proxy á CentOS

Smokkfiskur er vinsælt, ókeypis Linux forrit sem gerir þér kleift að búa til framsendingarforrit á vefnum. Í þessari handbók muntu sjá hvernig á að setja upp Squid á CentOS til að snúa þér

Hvernig á að setja upp Lighttpd (LLMP Stack) á CentOS 6

Hvernig á að setja upp Lighttpd (LLMP Stack) á CentOS 6

Inngangur Lighttpd er gaffal af Apache sem miðar að því að vera miklu minna auðlindafrekt. Hann er léttur, þess vegna heitir hann, og er frekar einfaldur í notkun. Uppsetning

Þrjú ókeypis stjórnborð miðlara (fljót uppsetning)

Þrjú ókeypis stjórnborð miðlara (fljót uppsetning)

1. Virtualmin/Webmin Virtualmin er öflugt og sveigjanlegt stjórnborð fyrir vefhýsingu fyrir Linux og UNIX kerfi byggt á hinum vel þekkta Open Source vefgrunni

Setja upp Yii forrit á Ubuntu 14.04

Setja upp Yii forrit á Ubuntu 14.04

Yii er PHP ramma sem gerir þér kleift að þróa forrit hraðar og auðveldlega. Uppsetning Yii á Ubuntu er einföld, þar sem þú munt læra nákvæmlega

Notkun Skjár á Ubuntu 14.04

Notkun Skjár á Ubuntu 14.04

Skjár er forrit sem leyfir margs konar notkun flugstöðvarlota innan eins glugga. Þetta gerir þér kleift að líkja eftir mörgum flugstöðvum gluggum þar sem það ma

Settu upp þinn eigin DNS netþjón á Debian/Ubuntu

Settu upp þinn eigin DNS netþjón á Debian/Ubuntu

Þessi kennsla útskýrir hvernig á að setja upp DNS netþjón með Bind9 á Debian eða Ubuntu. Í gegnum greinina skaltu skipta út-léninu þínu.com í samræmi við það. Á þ

Notkun Logrotate til að stjórna annálaskrám

Notkun Logrotate til að stjórna annálaskrám

Inngangur Logrotate er Linux tól sem einfaldar stjórnun annálaskráa. Það keyrir venjulega einu sinni á dag í gegnum cron-vinnu og stjórnar annálagrunni

Stilla Static Networking og IPv6 á CentOS 7

Stilla Static Networking og IPv6 á CentOS 7

VULTR hefur nýlega gert breytingar á enda þeirra og allt ætti nú að virka vel út úr kassanum með NetworkManager virkt. Ef þú vilt slökkva á

Breytir Icinga2 til að nota Master/Client Model á CentOS 6 eða CentOS 7

Breytir Icinga2 til að nota Master/Client Model á CentOS 6 eða CentOS 7

Icinga2 er öflugt eftirlitskerfi og þegar það er notað í aðal-viðskiptavinamódel getur það komið í stað þörf fyrir NRPE-undirstaða vöktunareftirlit. Húsbóndinn

Settu upp Red5 Media Server á Ubuntu 16.04

Settu upp Red5 Media Server á Ubuntu 16.04

Að nota annað kerfi? Red5 er opinn uppspretta miðlara útfærður í Java sem gerir þér kleift að keyra Flash fjölnotendaforrit eins og straumspilun í beinni

Settu saman og settu upp Nginx með PageSpeed ​​Module á Debian 8

Settu saman og settu upp Nginx með PageSpeed ​​Module á Debian 8

Í þessari grein munum við sjá hvernig á að setja saman og setja upp Nginx mainline frá opinberum heimildum Nginx með PageSpeed ​​einingunni, sem gerir þér kleift að

Hvernig á að setja upp Apache Cassandra 3.11.x á CentOS 7

Hvernig á að setja upp Apache Cassandra 3.11.x á CentOS 7

Að nota annað kerfi? Apache Cassandra er ókeypis og opinn uppspretta NoSQL gagnagrunnsstjórnunarkerfi sem er hannað til að veita sveigjanleika, háan

Hvernig á að setja upp Vanilla Forum á Ubuntu 16.04

Hvernig á að setja upp Vanilla Forum á Ubuntu 16.04

Að nota annað kerfi? Vanilla forum er opinn uppspretta spjallforrit skrifað í PHP. Það er fullkomlega sérhannaðar, auðvelt í notkun og styður utanaðkomandi

Hvernig á að setja upp Gitea á Debian 9

Hvernig á að setja upp Gitea á Debian 9

Að nota annað kerfi? Gitea er annað opinn uppspretta, sjálfhýst útgáfustýringarkerfi knúið af Git. Gitea er skrifað á Golang og er

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Gervigreind er ekki í framtíðinni, hún er hér í nútímanum Í þessu bloggi Lestu hvernig gervigreindarforrit hafa haft áhrif á ýmsa geira.

DDOS árásir: Stutt yfirlit

DDOS árásir: Stutt yfirlit

Ertu líka fórnarlamb DDOS árása og ruglaður með forvarnaraðferðirnar? Lestu þessa grein til að leysa spurningar þínar.

Hefur þú einhvern tíma velt því fyrir þér hvernig tölvuþrjótar græða peninga?

Hefur þú einhvern tíma velt því fyrir þér hvernig tölvuþrjótar græða peninga?

Þú gætir hafa heyrt að tölvuþrjótar græða mikið af peningum, en hefur þú einhvern tíma velt því fyrir þér hvernig þeir vinna sér inn svona peninga? við skulum ræða.

Byltingarkenndar uppfinningar frá Google sem munu auðvelda lífi þínu.

Byltingarkenndar uppfinningar frá Google sem munu auðvelda lífi þínu.

Viltu sjá byltingarkenndar uppfinningar frá Google og hvernig þessar uppfinningar breyttu lífi hvers manns í dag? Lestu síðan til að blogga til að sjá uppfinningar frá Google.

Föstudagur Nauðsynlegur: Hvað varð um gervigreindardrifna bíla?

Föstudagur Nauðsynlegur: Hvað varð um gervigreindardrifna bíla?

Hugmyndin um að sjálfkeyrandi bílar fari á göturnar með hjálp gervigreindar er draumur sem við höfum átt um tíma núna. En þrátt fyrir nokkur loforð eru þau hvergi sjáanleg. Lestu þetta blogg til að læra meira…

Tæknileg sérkenni: Fjarlæg framtíð mannlegrar siðmenningar?

Tæknileg sérkenni: Fjarlæg framtíð mannlegrar siðmenningar?

Þar sem vísindin þróast hratt og taka yfir mikið af viðleitni okkar, eykst hættan á því að verða fyrir óútskýranlegri einstæðu. Lestu, hvað sérkenni gæti þýtt fyrir okkur.

Þróun gagnageymslu – Infographic

Þróun gagnageymslu – Infographic

Geymsluaðferðir gagna hafa verið að þróast gæti verið frá fæðingu gagna. Þetta blogg fjallar um þróun gagnageymslu á grundvelli upplýsingamynda.

Virkni Big Data Reference Architecture Layers

Virkni Big Data Reference Architecture Layers

Lestu bloggið til að þekkja mismunandi lög í Big Data Architecture og virkni þeirra á einfaldasta hátt.

6 ótrúlegir kostir þess að hafa snjall heimilistæki í lífi okkar

6 ótrúlegir kostir þess að hafa snjall heimilistæki í lífi okkar

Í þessum stafræna heimi hafa snjallheimilistæki orðið afgerandi hluti af lífi. Hér eru nokkrir ótrúlegir kostir snjallheimatækja um hvernig þau gera líf okkar þess virði að lifa því og einfaldara.

macOS Catalina 10.15.4 viðbót uppfærsla veldur fleiri vandamálum en að leysa

macOS Catalina 10.15.4 viðbót uppfærsla veldur fleiri vandamálum en að leysa

Nýlega gaf Apple út macOS Catalina 10.15.4 viðbótaruppfærslu til að laga vandamál en svo virðist sem uppfærslan sé að valda fleiri vandamálum sem leiða til múrsteins á Mac vélum. Lestu þessa grein til að læra meira