Swoole فریمورک برنامهنویسی همگام در سطح تولید برای PHP است. یک اکستنشن PHP که به زبان C نوشته شده است و به توسعه دهندگان PHP کمک میکند تا بدون داشتن دانش زیاد از برنامهنویسی non-blocking I/O و هسته لینوکس، برنامه و سرویسهای با عملکرد بالا T مقیاس پذیر، همزمان TCP و UDP و Unix socket و HTTP و سرویسهای WebSocket را در PHP بنویسند.
اگر بخواهیم واضحتر توضیح بدهیم، میتوانید Swoole را چیزی شبیه به NodeJS اما برای PHP و با عملکرد بالاتر در نظر بگیرید.
چرا لاراول را روی Swoole اجرا کنیم؟
تصویر زیر چرخه زندگی PHP را نشان میدهد. همانطور که میبینید، هنگامی که اسکریپت php را اجرا میکنید، PHP نیاز به راهاندازی اولیه ماژولها و راه اندازی Zend Engine برای محیط در حال اجرا دارد. اسکریپت PHP برای اجرای Zend Engine باید در OpCodes کامپایل شود.
در هر حال، این چرخه باید در هر درخواست بارها و بارها انجام شود. چون محیط ایجادشده برای یک درخواست بلافاصله پس از انجام مراحل درخواست از بین میرود.
به عبارت دیگر، در چرخه عمر سنتیPHP، این کار باعث اتلاف وقت در ساخت و از بین بردن منابع برای اجرای اسکریپت شما میشود. تصور کنید که در فریمورکهایی مثل لاراول، برای یک درخواست چند فایل باید لود شود؟ مسلما برای لود فایلها، هم میزان مصرف ورودی و خروجی زیادی وجود دارد. اوضاع بدتر شد.!!!
اینجاست که Swoole وارد عمل میشود. چه اتفاقی میافتد اگر ما یک سرور داخلی در بالای Swoole داشته باشیم که بتوان همه اسکریپتها را پس از لود در حافظه ذخیره کرد؟ به همین دلیل است که پیشنهاد میکنیم لاراول را روی Swoole اجرا کنید. Swoole عملکرد را تقویت میکند و لاراول ساختار ظریف و کاربردهای کد را فراهم میکند. این یک ترکیب عالی است!
نصب Swoole
ویژگیهای اصلی swooletw / laravel-swoole را در این قسمت مشاهده میکنید:
اجرا شدن برنامه Laravel / Lumen بالای Swoole
افزایش عملکرد تا 30 برابر
حالت Sandbox برای جدا کردن container برنامه
پشتیبانی از سرور WebSocket در لاراول
پشتیبانی از پروتکل Socket.io
پشتیبانی از جدول Swoole برای به اشتراکگذاری دیتاهای cross-process
به این پکیج و کامپروسر نیاز داریم:
$ composer require swooletw/laravel-swoole
این پکیج به اکستنشن Swoole نیاز دارد. قبل از استفاده از این بسته، حتما Swoole را نصب کنید. برای نصب سریع از این دستور استفاده کنید.
pecl install swoole
LanguagePHP
بعد از نصب اکستنشن، باید php.ini را ویرایش کرده و یک خط extension=swoole.so
اضافه کنید.
php -i | grep php.ini # check the php.ini file location
sudo echo "extension=swoole.so" >> php.ini # add the extension=swoole.so to the end of php.ini
php -m | grep swoole # check if the swoole extension has been enabled
و service provider را اضافه کنید:
اگر از لاراول استفاده میکنید، service provider را به provider’s array در config/app.php
اضافه کنید:
[
'providers' => [
SwooleTW\Http\LaravelServiceProvider::class,
],
]
اگر از Lumen استفاده میکنید، کد زیر را به bootstrap/app.php
اضافه کنید:
$app->register(SwooleTW\Http\LumenServiceProvider::class);
توجه
اگر از لاراول 5.5 به بعد استفاده میکنید، میتوانید از این مرحله صرف نظر کنید.
اجرا کردن Swoole
اکنون میتوانید دستور زیر را برای راه اندازیSwoole HTTP server
اجرا کنید.
$ php artisan swoole:http start
سپس پیام زیر را مشاهده میکنید:
Starting swoole http server...
Swoole http server started: <http://127.0.0.1:1215>
حالا میتوانید در http://127.0.0.1:1215 به برنامه لاراول دسترسی پیدا کنید.
بنچمارک (Benchmark)
با استفاده از MacBook Air 13 ، 2015 با Lumen 5.5 تازه تست کنید.
ابزار بنچمارک گرفتن: wrk
wrk -t4 -c100 http://your.app
Nginx با FPM
Running 10s test @ http://lumen.app:9999
4 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 1.14s 191.03ms 1.40s 90.31%
Req/Sec 22.65 10.65 50.00 65.31%
815 requests in 10.07s, 223.65KB read
Requests/sec: 80.93
Transfer/sec: 22.21KB
Swoole HTTP Server
Running 10s test @ http://127.0.0.1:1215
4 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 11.58ms 4.74ms 68.73ms 81.63%
Req/Sec 2.19k 357.43 2.90k 69.50%
87879 requests in 10.08s, 15.67MB read
Requests/sec: 8717.00
Transfer/sec: 1.55MB
رقیه اباذری
تو دانشگاه IT خوندم و اکثر منابع کتابهای ترجمه شده بودند و صدالبته مبهم :( مثلا element رو "عنصر" ترجمه میکردن و من همیشه میرفتم تو شیمی و جدول مندلیف. تو باورژن سعی کردم تا حد ممکن مطالب رو با زبان ساده و قابل درک بنویسم. باشد که کسانی که تازه پا به عرصه برنامهنویسی گذاشتن، راغبتر بشن و با نظرات و فیدبکهای شما راه هموارتر بشه:)
دیدگاهها
ثبت دیدگاه