تیم لاراول بر روی Laravel Octane که یک ابزار برای بهینه سازی و افزایش کارایی برنامه شما می باشد به سختی کار کرده ، بعد از انتشار نسخه بتا در آوریل هم اکنون نسخه پایدار V1.0 منتشر شده.
پکیج Ocatane با استفاده از سرورهای پرقدرتی که با لاراول ادغام شده است بنچمارک عملکرد وصف نشدنی ای رو به رخ کشیده . بعضی از چیزایی که لازمه برای استفاده از نسخه پایدار Octane بدونید:
1- نیازمند نسخه PHP 8 و به بالا.
2- پکیج Octane از Roadrunner که یک اپلیکیشن سرور و تعدیل کننده و همچنین یک مدیر پردازش نوشته به زبان Go می باشد پشتیبانی می کند.
3- پکیج Octane از Swoole PHP که یک سرور برنامه ای برای PHP با Async IO می باشد پشتیبانی می کند.
مستندات در سایت لاراول قابل دسترس می باشند.
هنگام انتخاب سرور اصلی که می خواهید اجرا کنید مستندات را به دقت بخوانید هر دو سرور عملکرد بالایی رو به اجرا می گذارند اما Octane یه سری ویژگی های خاصی رو برای Swoole فراهم می کنه که توی Roadrunner امکان پذیر نیست.
وقتی از Swoole استفاده می کنید شما باید این گونه به یک cache driver دسترسی پیدا کنید:
Cache::store('octane')->put('framework', 'Laravel', 30);
بر اساس فایل Readme که Octane Cache driver(قدرت گرفته از Swoole table):
این Swoole تا تعداد 2 میلیون عملیات در ثانیه را برای خواندن و نوشتن را فراهم می کند. این cache driver قدرت گرفته به وسیله Swoole tables می باشد. تمامی داده های ذخیره شده در کش در تمامی workerهای سرور موجود می باشد. گرچه با خاموش شدن سرور تمامی داده های کش شده می پره :)
با Swoole شما می تونید تسک های همزمانی رو انجام بدید یعنی به طور همزمان یه سری عملیات رو همراه یه سری تسک های سبک دیگه به طور همزمان انجام بدید:
use App\User;
use App\Server;
use Laravel\Octane\Facades\Octane;
[$users, $servers] = Octane::concurrently([
fn () => User::all(),
fn () => Server::all(),
]);
در آخر Swoole مفهوم جداول Swoole رو داره که عملکرد عالی و داده های موجود در این جداول توسط همه Worker های موجود در سرور قابل دسترسی است رو فراهم می کنه.
در اینجا یک مثال می بینیم که شما می بینید چطور میشه با استفاده از Octane به جداول Swoole تعامل داشت:
// Octane tables config in config/octane.php
return [
'tables' => [
'example:1000' => [
'name' => 'string:1000',
'votes' => 'int',
],
],
];
// Usage example
use Laravel\Octane\Facades\Octane;
Octane::table('example')->set('uuid', [
'name' => 'Nuno Maduro',
'votes' => 1000,
]);
Octane::table('example')->get('uuid');