Menaxhimi i radhëve të punës Laravel me Beanstalk dhe mbikëqyrës në Ubuntu 16.04

Beanstalk është një radhë pune e shpejtë dhe e thjeshtë. Kjo ju lejon të ekzekutoni detyrat që kërkojnë kohë në mënyrë asinkrone, të tilla si dërgimi i emaileve, lidhja me API-të e jashtme ose përpunimi i imazheve. Duke vepruar kështu, ju do të zvogëloni vonesën e aplikacionit tuaj të internetit. Laravel ofron mbështetje jashtë kutisë për beanstalkd.

Në këtë tutorial ne do të instalojmë beanstalkd, konfigurojmë një aplikacion demo Laravel dhe do të menaxhojmë punëtorët e radhës përmes Supervisor . Aplikacioni demo do të marrë një listë të OS-ve të disponueshme nga Vultr API dhe do të zgjedhë rastësisht një.

Supozohet se ju tashmë keni të instaluar Supervisor në sistemin tuaj. Nëse nuk e bëni këtë, duhet të lexoni udhëzuesin e mëposhtëm se si të konfiguroni Supervisor: Instalimi dhe konfigurimi i Mbikëqyrësit në Ubuntu 16.04

Supozohet gjithashtu se ju keni akses SSH në shembullin tuaj Vultr.

Instalimi i Beanstalk

Hapi i parë për të ndërmarrë është instalimi beanstalkd.

sudo apt-get update
sudo apt-get install beanstalkd

Filloni shërbimin.

sudo systemctl start beanstalkd

Ju gjithashtu mund të aktivizoni shërbimin që të fillojë me inicializimin e sistemit.

sudo systemctl enable beanstalkd

Kontrolloni statusin e shërbimit duke lëshuar komandën e mëposhtme.

sudo systemctl status beanstalkd

Si parazgjedhje, beanstalkddëgjon në port 11300. Beanstalk përdor një protokoll të thjeshtë të bazuar në tekst të përshkruar në depon e tij github . Mund ta testoni protokollin e tij duke ekzekutuar telnet.

telnet localhost 11300

Shkruani sa vijon dhe goditni ENTER.

list-tubes

Ju duhet të shihni një listë të tubave të disponueshëm në server:

OK 14
---
- default

Për të mbyllur lidhjen thjesht shkruani quitdhe më pas shtypni ENTER.

Tubat në Beanstalk përfaqësojnë radhët e punës. Beanstalk është i përbërë kryesisht nga prodhuesit , konsumatorët , punët dhe tubacionet . Prodhuesit vendosin punë në një tub për t'u konsumuar (përpunuar) nga çdo numër konsumatorësh. Vini re se si prodhuesit ashtu edhe konsumatorët janë thjesht klientë të serverit Beanstalk dhe janë krejtësisht të pavarur nga njëri-tjetri. Në terma praktike kjo do të thotë që duke përdorur Beanstalk ju mund të prodhoni punët tuaja në aplikacionin tuaj PHP dhe ta përpunoni atë në një aplikacion NodeJS për shembull. Për fat të mirë, Laravel i përmbledh të gjitha këto dhe na ofron një API shumë të thjeshtë për të dërguar dhe trajtuar punët, siç do ta shohim më pas.

Shembull i projektit

Për të ndërtuar projektin tonë të mostrës, së pari duhet të instalojmë varësitë e tij. Ne do të instalojmë PHP dhe Composer.

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

Tani, krijoni projektin bazuar në Laravel 5.5.

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

Më pas cdnë dosjen e krijuar së fundmi. Ne do të punojmë në këtë drejtori tani e tutje. Kjo dosje mund të referohet më vonë si PROJECT_ROOT.

cd vultr/

Për të përdorur Beanstalk në Laravel, duhet të instalojmë një varësi tjetër, klientin PHP Beanstalk.

composer require pda/pheanstalk ~3.0

Ne gjithashtu duhet të krijojmë një përfaqësi pune. Në Laravel, kjo është një klasë brenda app/Jobsdosjes. Laravel ka një komandë konsole për të na ndihmuar të krijojmë një klasë pune. Le të krijojmë Punën tonë shembull.

php artisan make:job FindFavoriteOS

Përditësoni app/Jobs/FindFavoriteOS.phpskedarin në vijim.

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

Metoda e dorezës është ajo që do të ekzekutohet në mënyrë efektive kur puna të konsumohet. Këtu, ne marrim të dhëna nga Vultr API, zgjedhim rastësisht një OS dhe shkruajmë OS-në e zgjedhur në skedarin e regjistrit. Skedari i regjistrit ndodhet në storage/logs/laravel.log.

Ne kemi instaluar tashmë Beanstalk dhe kemi përcaktuar punën që do të ekzekutohet prej tij. Tani është koha për t'i thënë Laravel që të përdorë Beanstalk si radhën e paracaktuar të punës. Kopjoni .envskedarin e paracaktuar të ofruar nga instalimi i Laravel.

cp .env.example .env

Tani hapni .envskedarin dhe përditësoni linjën ku është specifikuar drejtuesi i radhës.

QUEUE_DRIVER=beanstalkd

Më në fund, gjeneroni një çelës aplikacioni.

php artisan key:generate

Tani jemi gati të dërgojmë punë në radhën e punës Beanstalk.

Punë dërgimi dhe drejtimi

Dërgimi i një pune në Laravel është mjaft i thjeshtë. Përditëso routes/web.phpskedarin.

<?php

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

    return '50 Jobs dispatched!';
});

Pavarësisht se nuk rekomandohet për të ekzekutuar serverin e integruar të ofruar në prodhim, ne do ta përdorim atë këtu për hir të shkurtësisë.

php artisan serve --host 0.0.0.0 --port 8000

Tani në një shfletues uebi, lundroni te http://[vultr-instance-ip]:8000. Do të shihni mesazhin e mëposhtëm.

50 Jobs dispatched!

Hapni një lidhje të re SSH me serverin tuaj dhe brenda rrënjës së projektit tonë, ekzekutoni sa më poshtë.

php artisan queue:work --once

Ky është rezultati i pritur:

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

Konfirmoni që regjistri është krijuar.

cat storage/logs/laravel.log

Konfigurimi i Mbikëqyrësit

Për të shmangur nevojën për të përpunuar manualisht radhën, ne do të përdorim supervisord. Krijoni konfigurimin e mëposhtëm të programit në /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

Vini re se rruga e duhur për të vendosur skedarin e konfigurimit të Mbikëqyrësit do të varet nga konfigurimi juaj. Gjithashtu, mos harroni të zëvendësoni [PROJECT_ROOT]me shtegun e plotë për PROJECT_ROOTnë sistemin tuaj.

Këtu ne po konfigurojmë Supervisorin që të fillojë automatikisht përpunimin e radhës dhe, në rast të prishjes së skriptit, ta rifillojë atë. Gjithashtu vini re se ne nuk jemi duke instancuar një punëtor të vetëm, por 8 procese. Ju jeni të lirë të instantoni sado procese që ju i gjeni të nevojshme në varësi të aplikimit tuaj.

Për të lejuar mbikëqyrësin të menaxhojë punonjësin tonë, detyrojeni atë të rilexojë konfigurimin e tij.

sudo supervisorctl reread
sudo supervisorctl update

Nëse shërbimi i Mbikëqyrësit nuk është nisur, shumë ju duhet ta filloni atë.

sudo systemctl start supervisord

Tani le të shohim nëse punët janë duke u përpunuar.

tail -f storage/logs/laravel.log

Në një shfletues uebi, lundroni te http://[vultr-instance-ip]:8000. Do të shihni regjistrat që krijohen në tastierën tuaj.

konkluzioni

Ne kemi konfiguruar me sukses një aplikacion Laravel për të përdorur Beanstalk si një radhë pune. Gjithashtu, ne demonstruam se si të përdorim Supervisor për të menaxhuar punëtorët.


Instaloni Plesk në CentOS 7

Instaloni Plesk në CentOS 7

Përdorimi i një sistemi të ndryshëm? Plesk është një panel kontrolli i pronarit të hostit në internet që lejon përdoruesit të administrojnë faqet e tyre të internetit personale dhe/ose të klientëve, bazat e të dhënave

Instaloni Lets Encrypt SSL në aplikacionin WordPress me një klik

Instaloni Lets Encrypt SSL në aplikacionin WordPress me një klik

Hyrje Lets Encrypt është një shërbim i autoritetit certifikues që ofron certifikata falas TLS/SSL. Procesi i instalimit është thjeshtuar nga Certbot,

Si të instaloni dhe konfiguroni PHP 7.0 ose PHP 7.1 në Ubuntu 16.04

Si të instaloni dhe konfiguroni PHP 7.0 ose PHP 7.1 në Ubuntu 16.04

PHP dhe paketat e lidhura me to janë komponentët më të përdorur gjatë vendosjes së një serveri në internet. Në këtë artikull, ne do të mësojmë se si të konfigurojmë PHP 7.0 ose PHP 7.1 o

Si të instaloni Lighttpd (LLMP Stack) në CentOS 6

Si të instaloni Lighttpd (LLMP Stack) në CentOS 6

Hyrje Lighttpd është një fork i Apache që synon të jetë shumë më pak intensiv me burime. Është i lehtë, prandaj emri i tij, dhe është mjaft i thjeshtë për t'u përdorur. Instaloni

Tre panele kontrolli të serverit falas (Instalim i shpejtë)

Tre panele kontrolli të serverit falas (Instalim i shpejtë)

1. Virtualmin/Webmin Virtualmin është një panel kontrolli i fuqishëm dhe fleksibël i hostimit në internet për sistemet Linux dhe UNIX i bazuar në bazën e mirënjohur të internetit me burim të hapur.

Vendosja e një aplikacioni Yii në Ubuntu 14.04

Vendosja e një aplikacioni Yii në Ubuntu 14.04

Yii është një kornizë PHP që ju lejon të zhvilloni aplikacione më shpejt dhe më lehtë. Instalimi i Yii në Ubuntu është i thjeshtë, siç do të mësoni saktësisht

Përdorimi i ekranit në Ubuntu 14.04

Përdorimi i ekranit në Ubuntu 14.04

Screen është një aplikacion që lejon përdorimin e shumëfishtë të sesioneve të terminalit brenda një dritareje. Kjo ju lejon të simuloni dritare të shumta terminale ku është ma

Konfiguro serverin tuaj DNS në Debian/Ubuntu

Konfiguro serverin tuaj DNS në Debian/Ubuntu

Ky tutorial shpjegon se si të konfiguroni një server DNS duke përdorur Bind9 në Debian ose Ubuntu. Gjatë gjithë artikullit, zëvendësoni emrin e domain-it tuaj në përputhje me rrethanat. Në

Përdorimi i Logrotate për të menaxhuar skedarët e regjistrave

Përdorimi i Logrotate për të menaxhuar skedarët e regjistrave

Hyrje Logrotate është një mjet Linux që thjeshton administrimin e skedarëve të regjistrit. Zakonisht funksionon një herë në ditë përmes një pune cron dhe menaxhon bazën e regjistrave

Konfigurimi i rrjeteve statike dhe IPv6 në CentOS 7

Konfigurimi i rrjeteve statike dhe IPv6 në CentOS 7

VULTR kohët e fundit ka bërë ndryshime në fund të tyre dhe gjithçka duhet të funksionojë mirë tani me NetworkManager të aktivizuar. Nëse dëshironi të çaktivizoni

Modifikimi i Icinga2 për të përdorur Modelin Master/Klient në CentOS 6 ose CentOS 7

Modifikimi i Icinga2 për të përdorur Modelin Master/Klient në CentOS 6 ose CentOS 7

Icinga2 është një sistem i fuqishëm monitorimi dhe kur përdoret në një model master-klient, ai mund të zëvendësojë nevojën për kontrolle monitorimi të bazuara në NRPE. Master-klien

Përpiloni dhe instaloni Nginx me Modulin e PageSpeed ​​në Debian 8

Përpiloni dhe instaloni Nginx me Modulin e PageSpeed ​​në Debian 8

Në këtë artikull, ne do të shohim se si të përpiloni dhe instaloni Nginx mainline nga burimet zyrtare të Nginx me modulin PageSpeed, i cili ju lejon t

Si të instaloni Gitea në Debian 9

Si të instaloni Gitea në Debian 9

Përdorimi i një sistemi të ndryshëm? Gitea është një sistem alternativ i kontrollit të versionit me burim të hapur, i vetë-pritur, i mundësuar nga Git. Gitea është shkruar në Golang dhe është

Si të instaloni Gitea në Ubuntu 18.04

Si të instaloni Gitea në Ubuntu 18.04

Përdorimi i një sistemi të ndryshëm? Gitea është një sistem alternativ i kontrollit të versionit me burim të hapur, i vetë-pritur, i mundësuar nga git. Gitea është shkruar në Golang dhe është

Si të instaloni MODX Revolution në një FreeBSD 11 FAMP VPS

Si të instaloni MODX Revolution në një FreeBSD 11 FAMP VPS

Përdorimi i një sistemi të ndryshëm? MODX Revolution është një Sistem i Menaxhimit të Përmbajtjes (CMS) i shpejtë, fleksibël, i shkallëzuar, me burim të hapur, i shkallës së ndërmarrjes, i shkruar në PHP. Ajo i

Instalimi i Docker CE në Ubuntu 16.04

Instalimi i Docker CE në Ubuntu 16.04

Përdorimi i një sistemi të ndryshëm? Docker është një aplikacion që lejon vendosjen e programeve që ekzekutohen si kontejnerë. Ishte shkruar në programin popullor Go

Si të instaloni Golang 1.8.3 në CentOS 7, Ubuntu 16.04 dhe Debian 9

Si të instaloni Golang 1.8.3 në CentOS 7, Ubuntu 16.04 dhe Debian 9

Golang është një gjuhë programimi e zhvilluar nga Google. Falë shkathtësisë, thjeshtësisë dhe besueshmërisë së tij, Golang është bërë një nga më të populluarit

Përmirësimi i shfrytëzimit të lopës së pistë në CentOS

Përmirësimi i shfrytëzimit të lopës së pistë në CentOS

Çfarë është Lopa e Pistë (CVE-2016-5195)? Dobësia e Dirty Cow shfrytëzohet përmes mënyrës se si Linux përpunon kodin. Ai lejon që një përdorues i paprivilegjuar të gai

Konfiguro një përdorues jo-rrënjë me Sudo Access në Ubuntu

Konfiguro një përdorues jo-rrënjë me Sudo Access në Ubuntu

Të kesh vetëm një përdorues, i cili është root, mund të jetë i rrezikshëm. Pra, le ta rregullojmë atë. Vultr na ofron lirinë për të bërë si të duam me përdoruesit dhe serverët tanë

Rivendosni fjalëkalimin rrënjësor MySQL në Debian/Ubuntu

Rivendosni fjalëkalimin rrënjësor MySQL në Debian/Ubuntu

Nëse e keni harruar fjalëkalimin tuaj rrënjësor MySQL, mund ta rivendosni atë duke ndjekur hapat në këtë artikull. Procesi është mjaft i thjeshtë dhe funksionon në to

Ngritja e makinave: Aplikimet në botën reale të AI

Ngritja e makinave: Aplikimet në botën reale të AI

Inteligjenca Artificiale nuk është në të ardhmen, është këtu në të tashmen Në këtë blog Lexoni se si aplikacionet e inteligjencës artificiale kanë ndikuar në sektorë të ndryshëm.

Sulmet DDOS: Një përmbledhje e shkurtër

Sulmet DDOS: Një përmbledhje e shkurtër

A jeni edhe ju viktimë e Sulmeve DDOS dhe jeni konfuz në lidhje me metodat e parandalimit? Lexoni këtë artikull për të zgjidhur pyetjet tuaja.

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

Ju mund të keni dëgjuar se hakerët fitojnë shumë para, por a keni menduar ndonjëherë se si i fitojnë ato para? Le te diskutojme.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Dëshironi të shihni shpikjet revolucionare nga Google dhe se si këto shpikje ndryshuan jetën e çdo njeriu sot? Më pas lexoni në blog për të parë shpikjet nga Google.

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

Koncepti i makinave vetë-drejtuese për të dalë në rrugë me ndihmën e inteligjencës artificiale është një ëndërr që e kemi prej kohësh. Por, pavarësisht nga disa premtime, ato nuk shihen askund. Lexoni këtë blog për të mësuar më shumë…

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Ndërsa Shkenca evoluon me një ritëm të shpejtë, duke marrë përsipër shumë nga përpjekjet tona, rriten edhe rreziqet për t'iu nënshtruar një Singulariteti të pashpjegueshëm. Lexoni, çfarë mund të thotë singulariteti për ne.

Evolucioni i ruajtjes së të dhënave - Infografik

Evolucioni i ruajtjes së të dhënave - Infografik

Metodat e ruajtjes së të dhënave kanë evoluar mund të jenë që nga lindja e të dhënave. Ky blog mbulon evolucionin e ruajtjes së të dhënave në bazë të një infografike.

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Lexoni blogun për të njohur shtresat e ndryshme në arkitekturën e të dhënave të mëdha dhe funksionalitetet e tyre në mënyrën më të thjeshtë.

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

Në këtë botë të drejtuar nga dixhitali, pajisjet inteligjente të shtëpisë janë bërë një pjesë thelbësore e jetës. Këtu janë disa përfitime të mahnitshme të pajisjeve shtëpiake inteligjente se si ato e bëjnë jetën tonë të vlefshme dhe më të thjeshtë.

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Së fundmi Apple lëshoi ​​macOS Catalina 10.15.4 një përditësim shtesë për të rregulluar problemet, por duket se përditësimi po shkakton më shumë probleme që çojnë në bricking të makinerive mac. Lexoni këtë artikull për të mësuar më shumë