Swoole Kurulum ve Laravel

Tolga Karabulut
3 min readMar 15, 2020

Herkese Merhaba bu yazımızda sizlere Swoole anlatmaya çalışacağım. Daha önce duymamış olabilirsiniz hiç önemli değil okumayı bitirdiğinizde tam olarak neler olduğunu anlayacaksınız. Hadi Başlayalım!

Öncelikle Nedir bu Swoole ?
Swoole PHP için geliştirilmiş C ve C++ ile yazılmış Eşzamansız, Olay Odaklı Coroutine tabanlı bir eş zamanlı ağ iletişim motorudur. Açıklamalara çok takılmadan PHP için yeni bir dönem diyebiliriz. Bu makalede Laravel üzerinde ki kullanıma odaklanacağız.

Sistem Gereksinimleri

  • İşletim Sistemi : Linux*, FreeBSD, MacOS
  • Linux Kernel Versiyon ≥ 2.3.32
  • PHP Versiyon ≥ 5.3.10
  • GCC version ≥ 4.4
  • Cmake Versiyon ≥ 2.4**
* CentOS 6.2+ | Ubuntu 12+ | Debian 6+
** Cmake Swoole Kütüphanesinin C/C++ derlenebilmesi için gereklidir.

Önerilen Ortamlar ise Ubuntu için ≥ 14 , CentOS ≥ 7 sürümüdür.

Kurulum

Swoole için kurulumu Pecl üzerinden yapabiliyoruz. Şöyle;

#!/bin/bash
pecl install swoole

Bu sayede sistemimiz üzerine Swoole kütüphanesinin kurulmasını sağlamış oluyoruz. Manuel olarak kurmak istersek ise Şöyle;

#!/bin/bash
cd /tmp
wget https://github.com/swoole/swoole-src/archive/v4.4.16.zip
cd swoole
phpize
./configure
make
swoole/module/swoole.so
sudo make install

Bunların ardından sistemimizde artık kütüphane eklenmiş oldu. Fakat aktif etmedik şimdi ise aktifleştirme işlemini yapalım.

php -i | grep php.ini                     
sudo echo "extension=swoole.so" >> php.ini
php -m | grep swoole

Yukarıda ki blog aslında bizim php.ini dosyamızın içerisine Swoole için bir tanımlama yapıyor. Php.ini dosyanıza giderekte bunu kontrol edebilirsiniz.
Tüm bunların ardından artık Swoole kullanmaya hazır. Fakat biz Laravel üzerinde ki kullanımından bahsedeceğimiz için yapmamız gereken birkaç adım daha var hızlıca onlardan da konuşalım.

Laravel ve Swoole

Buraya kadar geldiğinize göre Laravel Proje oluşturmaktan bahsetmeyeceğim. Projenizin olduğu dizinde tekbir değişiklik ile kolayca eklenebilir olduğunu göreceksiniz. Hadi ekleyelim;

composer require swooletw/laravel-swoole

Composer üzerinden swooletw/laravel-swoole paketini projemize eklemek ile başlıyoruz ardından | /config/app.php dosyamıza gidiyoruz ve providers kısmına Servis sınıfımızı ekliyoruz.

#config/app.php[     
'providers' =>
[
SwooleTW\Http\LaravelServiceProvider::class,
],
]

Böylelikle Laravel Projemize Swoole eklemiş olduk. Şimdi ise Projemizi çalıştıralım ve testlerimizi yapalım. Artisan CLI üzerinden şu kodu çalıştırıyoruz.

php artisan swoole:http start

Şu mesajı alıyorsak projemiz çalışıyor demektir.

Starting swoole http server... Swoole http server started: <http://127.0.0.1:1215>

Şimdi birkaç ayar yapabiliriz. Öncelikli olarak şu 1215 portu yerine 80 portunda çalıştıralım. Kurulumun ardından Config Klasörümüzün içerisinde swoole_http.php dosyamız oluştu tüm Swoole ile ilgili ayarlarımız burada şimdilik sadece

'port' => env('SWOOLE_HTTP_PORT', '1215') yerine 
'port' => env('SWOOLE_HTTP_PORT', '80'),

diyebiliriz. Tabii ki bu çok doğru bir yöntem değil doğrudan .env dosyamıza şu anahtarı ekleyip tekrar çalıştırıyoruz.

#! /.env
SWOOLE_HTTP_PORT=80
#!/bin/bash
php artisan optimize:clear
...
php artisan swoole:http start

ardından artık projemiz 80 portumuz üzerinden yayın yapmaya başladı. Artık bir benchmark testi yapabiliriz. Örnek çıktıları sizler ile paylaşıyorum. Kendi testlerimi henüz yazıyorum daha sonra kapsamlı olarak buradan başka bir makalede onlarıda paylaşacağım. Sizlerde yorumlarda sonuçlarınızı ve test koşullarınızı paylaşırsanız daha çok fikire sahip olabilir. Şimdiden teşekkürler.

#! Nginx - PHP-FPM
Running 10s test @ http://127.0.0.1
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 ServerRunning 10s test @ http://127.0.0.1   
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

Kaynaklar :
https://github.com/swooletw/laravel-swoole
https://www.swoole.co.uk

Tolga Karabulut
tolga.karabulut@medianova.com
Medianova CDN | Senior PHP Developer

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Tolga Karabulut
Tolga Karabulut

Written by Tolga Karabulut

Software Development Specialist | @teknasyon Developer Team

No responses yet

Write a response