การจัดการคิวงาน Laravel ด้วย Beanstalk และหัวหน้างานบน Ubuntu 16.04

Beanstalkเป็นคิวการทำงานที่รวดเร็วและง่ายดาย ช่วยให้คุณสามารถรันงานที่ต้องใช้เวลามากแบบอะซิงโครนัสเช่นการส่งอีเมลการเชื่อมต่อกับ API ภายนอกหรือการประมวลผลภาพ คุณจะลดเวลาในการตอบสนองของเว็บแอป Laravel beanstalkdให้ออกจากกล่องการสนับสนุน

ในการกวดวิชานี้เราจะติดตั้งbeanstalkdการติดตั้งการสาธิตการประยุกต์ใช้ Laravel และจัดการแรงงานคิวผ่านทางหัวหน้างาน แอปพลิเคชันตัวอย่างจะได้รับรายชื่อของระบบปฏิบัติการที่มีอยู่จากVultr APIและเลือกแบบสุ่ม

จะถือว่าคุณได้ติดตั้งหัวหน้างานไว้ในระบบของคุณแล้ว หากคุณไม่มีคุณควรอ่านบทช่วยสอนต่อไปนี้เกี่ยวกับวิธีตั้งค่า Supervisor: การติดตั้งและกำหนดค่า Supervisor บน Ubuntu 16.04

นอกจากนี้ยังสันนิษฐานว่าคุณมี SSH เข้าถึงอินสแตนซ์ Vultr ของคุณ

กำลังติดตั้งฝักถั่ว

beanstalkdขั้นตอนแรกที่จะใช้คือการติดตั้ง

sudo apt-get update
sudo apt-get install beanstalkd

เริ่มบริการ

sudo systemctl start beanstalkd

นอกจากนี้คุณยังสามารถเปิดใช้งานบริการเพื่อเริ่มต้นเมื่อเริ่มต้นระบบ

sudo systemctl enable beanstalkd

ตรวจสอบสถานะการบริการโดยออกคำสั่งต่อไปนี้

sudo systemctl status beanstalkd

โดยค่าเริ่มต้นฟังพอร์ตbeanstalkd 11300ฝักถั่วใช้โปรโตคอลข้อความตามที่อธิบายไว้ในที่เรียบง่ายของมันที่เก็บ GitHub telnetคุณสามารถทดสอบมันโปรโตคอลโดยการเรียกใช้

telnet localhost 11300

ENTERเขียนต่อไปนี้และตี

list-tubes

คุณควรเห็นรายการหลอดที่มีอยู่บนเซิร์ฟเวอร์:

OK 14
---
- default

การปิดการเชื่อมต่อเพียงแค่พิมพ์และกดquitENTER

หลอดใน Beanstalk แสดงถึงคิวงาน ถั่วประกอบด้วยโดยทั่วไปโดยผู้ผลิต , ผู้บริโภค , งานและหลอด ผู้ผลิตใส่งานลงในหลอดที่บริโภค (ประมวลผล) โดยผู้บริโภคจำนวนเท่าใดก็ได้ โปรดทราบว่าทั้งผู้ผลิตและผู้บริโภคเป็นเพียงลูกค้าของเซิร์ฟเวอร์ Beanstalk และมีความเป็นอิสระจากกัน ในแง่การปฏิบัติซึ่งหมายความว่าโดยการใช้ Beanstalk คุณอาจสร้างงานของคุณในแอปพลิเคชัน PHP ของคุณและนำไปประมวลผลในแอป NodeJS โชคดีที่ Laravel สรุปทั้งหมดนี้และให้ API ที่ง่ายมากแก่เราในการจัดส่งและจัดการงานตามที่เราจะเห็นต่อไป

ตัวอย่างโครงการ

ในการสร้างโครงการตัวอย่างของเราอันดับแรกเราต้องติดตั้งการพึ่งพา เรากำลังจะติดตั้ง PHP และนักแต่งเพลง

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

ตอนนี้สร้างโครงการตาม Laravel 5.5

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

ถัดไปcdลงในโฟลเดอร์ที่สร้างขึ้นล่าสุด เราจะทำงานในไดเรกทอรีนี้นับจากนี้เป็นต้นไป PROJECT_ROOTโฟลเดอร์นี้อาจได้รับการอ้างอิงในภายหลัง

cd vultr/

ในการใช้ Beanstalk ใน Laravel เราจำเป็นต้องติดตั้งการพึ่งพาอีกหนึ่งไคลเอนต์ PHP Beanstalk

composer require pda/pheanstalk ~3.0

นอกจากนี้เรายังจำเป็นต้องสร้างการเป็นตัวแทนงาน ใน Laravel นี่เป็นคลาสภายในapp/Jobsโฟลเดอร์ Laravel มีคำสั่งคอนโซลเพื่อช่วยเราสร้างคลาส Job มาสร้างงานตัวอย่างของเรากัน

php artisan make:job FindFavoriteOS

อัพเดตapp/Jobs/FindFavoriteOS.phpไฟล์เป็นต่อไปนี้

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

วิธีการจัดการคือสิ่งที่จะถูกดำเนินการอย่างมีประสิทธิภาพเมื่อมีการใช้งาน ที่นี่เราดึงข้อมูลจาก Vultr API สุ่มเลือกระบบปฏิบัติการและเขียนระบบปฏิบัติการที่เลือกไปยังไฟล์บันทึก storage/logs/laravel.logแฟ้มบันทึกตั้งอยู่ที่

เราได้ติดตั้ง Beanstalk แล้วและกำหนดงานที่จะดำเนินการโดยมัน ตอนนี้ได้เวลาบอก Laravel ให้ใช้ Beanstalk เป็นคิวงานเริ่มต้น คัดลอก.envไฟล์เริ่มต้นที่ได้รับจากการติดตั้ง Laravel

cp .env.example .env

ตอนนี้เปิด.envไฟล์และอัพเดตบรรทัดที่ระบุไดรเวอร์คิว

QUEUE_DRIVER=beanstalkd

สุดท้ายสร้างแอปพลิเคชันคีย์

php artisan key:generate

ตอนนี้เราพร้อมที่จะส่งงานไปยังคิวงาน Beanstalk

การส่งและการเรียกใช้งาน

การส่งงานใน Laravel นั้นค่อนข้างง่าย อัพเดตroutes/web.phpไฟล์

<?php

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

    return '50 Jobs dispatched!';
});

แม้จะไม่ได้รับการแนะนำให้เรียกใช้เซิร์ฟเวอร์ที่ให้มาพร้อมกับเครื่อง แต่เราจะใช้งานที่นี่เพื่อความกระชับ

php artisan serve --host 0.0.0.0 --port 8000

http://[vultr-instance-ip]:8000ตอนนี้ในเว็บเบราว์เซอร์เพื่อนำทาง คุณจะเห็นข้อความต่อไปนี้

50 Jobs dispatched!

เปิดการเชื่อมต่อ SSH ใหม่ไปยังเซิร์ฟเวอร์ของคุณและภายในรูทโครงการของเราให้ดำเนินการดังต่อไปนี้

php artisan queue:work --once

นี่คือผลลัพธ์ที่คาดหวัง:

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

ยืนยันว่าสร้างบันทึกแล้ว

cat storage/logs/laravel.log

การกำหนดค่าหัวหน้างาน

supervisordเพื่อหลีกเลี่ยงความจำเป็นที่จะต้องดำเนินการด้วยตนเองคิวเราจะใช้ /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

โปรดสังเกตว่าเส้นทางที่ถูกต้องที่จะนำไฟล์กำหนดค่าของผู้บังคับบัญชาขึ้นอยู่กับการตั้งค่าของคุณ นอกจากนี้อย่าลืมแทนที่[PROJECT_ROOT]ด้วยพา ธ แบบเต็มไปยังPROJECT_ROOTบนระบบของคุณ

ที่นี่เรามีการกำหนดค่าหัวหน้างานให้เริ่มการประมวลผลคิวโดยอัตโนมัติและในกรณีที่มีการทำลายสคริปต์เพื่อเริ่มต้นใหม่ โปรดทราบด้วยว่าเราไม่ได้ยกตัวอย่างคนงานคนเดียว แต่เป็นกระบวนการที่ 8 คุณมีอิสระในการสร้างอินสแตนซ์อย่างไรก็ตามกระบวนการหลายอย่างที่คุณคิดว่าจำเป็นขึ้นอยู่กับแอปพลิเคชันของคุณ

ในการอนุญาตให้หัวหน้างานจัดการพนักงานของเราบังคับให้ทำการอ่านการกำหนดค่าใหม่

sudo supervisorctl reread
sudo supervisorctl update

หากยังไม่ได้เริ่มบริการหัวหน้างานคุณต้องเริ่มต้นใช้งาน

sudo systemctl start supervisord

ตอนนี้เรามาดูว่างานที่กำลังดำเนินการอยู่

tail -f storage/logs/laravel.log

http://[vultr-instance-ip]:8000บนเว็บเบราว์เซอร์เพื่อนำทาง คุณจะเห็นบันทึกที่สร้างขึ้นบนคอนโซลของคุณ

ข้อสรุป

เราได้กำหนดค่าแอปพลิเคชัน Laravel ให้สำเร็จเพื่อใช้ Beanstalk เป็นคิวงาน นอกจากนี้เรายังสาธิตวิธีใช้หัวหน้างานเพื่อจัดการพนักงาน

ฝากความเห็น

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

เรียนรู้วิธีการตั้งค่า Nginx บน Ubuntu สำหรับการสตรีมวิดีโอสด HLS ด้วยคำแนะนำที่ชัดเจนและเป็นประโยชน์

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

เรียนรู้การใช้ Percona XtraBackup สำหรับการสำรองข้อมูลด้วยวิธีที่เป็นระบบและง่ายดายบน WordPress ออนไลน์ของคุณ

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true