مرا اسکن کن!

استفاده از SWOOLE در PHP

استفاده از SWOOLE در PHP



swoole این امکان رو به برنامه نویسان پی اچ پی میده که کدی با سرعت اجرایی و مقیاس پذیری بالا تولبد کنند . با نصب این کتابخانه شما 
concurrent TCP, UDP, Unix socket, HTTP, Websocket را با زبان پی اچ پی در اختیار دارید بدون نیاز به دانش non-blocking I/O programming و low-level Linux kernel

بعضی از برنامه نویسان اعتقاد دارند که swoole دوباره زبان php را تعریف کرد.روند هر درخواست در نرم افزار نوشته شده با پی اچ پی به صورت request می باشد.و زبان پی اچ مانند بعضی زبان های دیگر از multi thread و درخواست غیر همزمان پشتیبانی نمی کنه.که البته خود نبود این امکان , از دید برنامه نویشان پی اچ پی مزیت می باشد ..چون هر درخواست به صورت یک درخواست هست و حال برای پردازش همزمان می توان در سطح سرور این مورد را پشتیانی کرد که باعث مبشه دیباگ پروژه نوشته شده به زبان پی اچ پی ساده تر باشه و تو scale بالا به مشکل نخوره.چون برای پردازش بیشتر در سطح سرور این نیاز handle می شه.
با این حال کتابخانه swoole یا بسته های زیادی که به صورت داخلی همراه خود دارد این نیاز را نیز به صورت خیلی خوب برطرف می کند که دقیقا مناسب برای  مرحله  production در محصول می باشد.

برخی از مزیت های Swoole

- Event-Driven, Asynchronous Programming For PHP

- Async TCP / UDP / HTTP / Websocket / HTTP2 Client/Server Side API

- IPv4 / IPv6 / Unixsocket / TCP/ UDP And SSL / TLS Support

- Fast Serializer / Unserializer

High Performance, Scalable, Support C1000K

- Milliseconds Task Scheduler

- Open Source

- Daemonize

موارد استفاده کتابخانه swoole در php برای پروژه های :

- Mobile API Server

- Internet Of Things

- Micro Services

- Web Applications

- Gaming Servers

- Live Chat Systems

کتابخانه swoole به زبان C و مخصوص زبان پی اج پی نوشته شده است.
swoole با زبان سنتی پی اچ پی متفاوت بوده و در سطح CLI اجرا می شود.
 

استفاده از swoole در فریم ورک محبوب laravel در پی اچ پی هم باعث میشه performance  بسیار بهتری بدست بیارید.

در lifecycle در زبان پی اچ هر زمان که شما کد پی اچ پی رو اجرا می کنید.پی اچ پی module های خودش رو intialize می کنه zend engine رو اجرا می کنه و اسکریپت پی اچ پی به OPcode کامپایل میشه که برای اجرا در اختیار zend engine قرار بگیره.

محیط اجرایی که توسط zend engine تولید میشه بعد از اتمام هر درخواست از بین میره.در swoole همه اسکریپت ها بعد از اجرا در حافظه باقی میمونه برای درخواست های بعدی.

با نصب پکیج swooletw/laravel-swoole در لاراول می توانید امکانات swoole رو در اختیار داشته باشید و بهبود عملکری تا 30 برابر رو به دست بیارید.
 

برای نصب در لاراول

composer require swooletw/laravel-swoole

 

این پکیج نیاز به افرونه swoole داره که باید از نصب آن مطمین بود.

pecl install swoole

 

بعد از نصب نیاز هست که فایل 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

 

نکته : swoole در حال حاظر تنها از سیستم عامل های linux و OSX پشتیبانی می کنه.
 

سپس این service provider را در config/app.php اضافه کنید

[
    'providers' => [
        SwooleTW\Http\LaravelServiceProvider::class,
    ],
]

 

حال با اجرای دستور زیر میتونید swoole http server رو اجرا کنید رو ماشین خودتون :

php artisan swoole:http start

 

سپس شما پیغام زیر رو باید ببینید 

Starting swoole http server...
Swoole http server started: 

 

حال شما به لاراول خود با آدرس  http://127.0.0.1:1215 میتونید دسترسی داشته باشید

مقایسه benchmark ها ی swoole و nginx توسظ ابزار 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

 

برای اطلاعات بیشتر درباره پروژه swoole میتونید به صفحه مستندات و گیت هاب swoole مراجعه کنید.
 


نوشته شده توسط :

وحید صمدیان وحید صمدیان



دوشنبه, 17 اردیبهشت 1397

تعداد بازديد : 1821

برچسب ها : PHP

3.0 ستاره