ServBay’de PHP Swoole Modülü Nasıl Etkinleştirilir
ServBay, güçlü bir yerel web geliştirme ortamı olarak birçok geliştiricinin ihtiyaç duyduğu araç ve eklentileri içinde barındırır; bunlar arasında yüksek performanslı Swoole PHP uzantısı da bulunmaktadır. Swoole, PHP için tasarlanmış asenkron, paralel ve yüksek performanslı bir ağ iletişim motorudur ve PHP uygulamalarınızın performansını ve ölçeklenebilirliğini önemli ölçüde artırabilir. Bu makalede, ServBay’de Swoole uzantısının nasıl kolayca etkinleştirileceği detaylı bir şekilde anlatılacak ve bu güçlü yetenekleriyle daha verimli PHP uygulamaları ve servisleri nasıl geliştirebileceğiniz gösterilecektir.
Swoole Çerçevesi Hakkında
Swoole, PHP’ye Node.js benzeri asenkron I/O, coroutine (işbirlikçi çoklu görev), çoklu süreç gibi modern yetenekler kazandıran açık kaynaklı bir projedir. Swoole sayesinde, PHP geliştiricileri geleneksel web sunucularının (Apache/Nginx + PHP-FPM) senkron, bloklu modelinden kurtularak şu tip yüksek performanslı rezident servisler oluşturabilirler:
- Yüksek performanslı API ağ geçidi
- Gerçek zamanlı iletişim uygulamaları (WebSocket)
- Oyun sunucuları
- IoT (Nesnelerin İnterneti) uygulamaları
- Arka plan servisleri ve görev işleyiciler
Swoole’un Temel Özellikleri
- Yüksek Performans: epoll/kqueue gibi sistem aramalarına dayalı asenkron ve bloklamayan I/O ile, çoklu iş parçacığı, çoklu süreç ve coroutine kombinasyonu sayesinde yüksek bant genişliği ve düşük gecikme sağlar.
- Asenkronluk ve Coroutine: Coroutine desteği ile asenkron kodu sanki senkronmuş gibi yazabilirsiniz; bu da geliştirme verimliliğini önemli ölçüde artırır.
- Zengin Bileşenler: HTTP, WebSocket, TCP, UDP sunucu ve istemcileri, bağlantı havuzu, zamanlayıcılar ve süreç yönetimi gibi birçok özellik dahili olarak gelir.
- Kolay Entegrasyon: Mevcut PHP çerçeveleriyle (Laravel, Symfony, ThinkPHP vb.) kolayca entegre edilebilir ya da sıfırdan Swoole tabanlı uygulama geliştirmek mümkündür.
ServBay’de Swoole Modülü Desteği
ServBay, çeşitli PHP sürümlerine Swoole uzantısını ön tanımlı olarak sunar; uzantıyı indirip derleme gereği yoktur. Ayrıca, kullandığınız PHP sürümüne uygun Swoole sürümü ServBay tarafından otomatik olarak yönetilir.
Şu anda ServBay, aşağıdaki PHP sürümlerinde Swoole’yi etkinleştirmeyi desteklemektedir:
- PHP 5.6
- PHP 7.x serisi
- PHP 8.x serisi (PHP 8.5 dahil)
ServBay, seçtiğiniz PHP sürümüne göre uygun Swoole uzantısını otomatik olarak sağlar.
Önkoşullar
Swoole modülünü etkinleştirmeden önce aşağıdakilerden emin olun:
- ServBay’i başarıyla yükleyip çalıştırdınız.
- Swoole’yi kullanmak istediğiniz PHP sürümünü ServBay’de yükleyip seçili hale getirdiniz.
Swoole Modülünü Etkinleştirme Adımları
ServBay, Swoole modülünü etkinleştirmek için grafiksel arayüz veya manuel yapılandırma dosyası düzenleme gibi iki yöntem sunar; görsel arayüz kullanılması önerilir, çünkü daha sezgisel ve pratiktir.
ServBay GUI Üzerinden Etkinleştirme (Önerilir)
En hızlı ve kolay yöntem aşağıdaki adımlardır:
- ServBay grafik arayüzünü açın.
- Sol menüde Diller (Languages) seçeneğine tıklayın.
- PHP’ye tıklayın.
- Sağdaki PHP sürüm listesinde, Swoole'yi etkinleştirmek istediğiniz PHP sürümünü bulun (örn.
PHP 8.3
). İlgili sürüm seçili olmalı (yanındaki daire yeşil olmalı). - O sürümün sağındaki Uzantılar (Extensions) tuşuna tıklayın.
- Açılan listeden swoole uzantısını bulun.
- Solundaki anahtarı açın (yeşil olduğunda açık demektir).
- Sayfanın altındaki Kaydet (Save) veya Uygula (Apply) butonuna tıklayın.
- Yeni uzantıların yüklenmesi için ServBay, size ilgili PHP servisini yeniden başlatmanız gerektiğini bildirecek. Yeniden Başlat (Restart) butonuna tıklayın.
Servis yeniden başlatıldıktan sonra Swoole modülü başarılı şekilde etkinleştirilmiş olur.
Yapılandırma Dosyasını Manuel Düzenleyerek Etkinleştirme (İleri Seviye)
Daha ileri düzey yapılandırmalar yapmak ya da ayar dosyalarını manuel olarak yönetmek istiyorsanız, ilgili PHP’nin ini
dosyasını düzenleyerek Swoole’yi etkinleştirebilirsiniz.
İlgili PHP sürümünün
conf.d
yapılandırma dizinine gidin.conf.d
PHP uzantısı ayarlarının saklandığı yerdir ve ServBay bu klasördeki.ini
dosyalarını otomatik olarak yükler. Örneğin, PHP 8.3 için yol genellikle şöyledir:/Applications/ServBay/etc/php/8.3/conf.d/
1Farklı bir yükleme yolu belirlediyseniz, kendi dizin yapınıza göre ayarlayın.
Bu klasörde
swoole.ini
dosyasını bulun ve açın.Varsayılan olarak, Swoole'yi etkinleştiren satır başında
;
bulunarak devre dışı bırakılmış olabilir. Şu satırı bulun:ini[Swoole] ; Uncomment the following line to enable Swoole ;extension = swoole.so
1
2
3Başındaki
;
karakterini silin ve satırı aktifleştirin:ini[Swoole] ; Uncomment the following line to enable Swoole extension = swoole.so
1
2
3swoole.ini
dosyasını kaydedin.ServBay arayüzünde veya servis yönetim panelinde ilgili PHP servisini yeniden başlatın.
Servis yeniden başlatıldıktan sonra, yapılandırma dosyanızdaki değişiklikler yüklenir ve Swoole etkin olur.
Swoole Modülünün Etkinleştiğini Doğrulama
En yaygın yöntem, phpinfo()
fonksiyonu ile yüklü PHP modüllerini kontrol etmektir.
- ServBay’in barındırdığı bir sitenin kök dizininde (örn.
/Applications/ServBay/www/servbay.demo/public/
)phpinfo.php
adında bir dosya oluşturun. - Bu dosyayı aşağıdaki kod ile oluşturup kaydedin:php
<?php phpinfo(); ?>
1
2
3 - ServBay üzerinde
servbay.demo
adlı site yapılandırılmış ve bu dizini gösteriyor olmalıdır. - Tarayıcıda, ilgili URL’yi açın; örn.
https://servbay.demo/phpinfo.php
. - Açılan
phpinfo
sayfasında, aşağıya kaydırarak veya arama (Ctrl+F ya da Cmd+F) ile "swoole" anahtar kelimesini arayın.
Sayfada Swoole ile ilgili bilgiler (sürüm, yapılandırma seçenekleri vb.) çıkıyorsa, modül başarıyla yüklenmiş ve etkinleştirilmiş demektir.
Görsel: phpinfo sayfasında Swoole bilgisini arayın
Swoole Kullanım Örneği
Swoole modülünü etkinleştirdikten sonra kendi Swoole uygulamanızı yazabilirsiniz. Aşağıda, temel bir Swoole HTTP sunucusunun nasıl oluşturulacağına dair bir örnek bulabilirsiniz.
Örnek Kod: Basit Bir Swoole HTTP Sunucusu Oluşturma
Proje Dizinini Oluşturun Geliştirme dizininizde (örneğin
/Applications/ServBay/www/
altında) yeni bir proje klasörü oluşturun; adımy-swoole-app
olabilir. Bu dizin altındapublic
klasörünü de oluşturun:bashcd /Applications/ServBay/www/ mkdir my-swoole-app cd my-swoole-app mkdir public
1
2
3
4Sunucu Giriş Dosyasını Oluşturun:
public/index.php
php<?php require __DIR__ . '/../vendor/autoload.php'; // Composer ile başka bağımlılıklar yüklediyseniz gerekli use Swoole\Http\Server; use Swoole\Http\Request; use Swoole\Http\Response; // Tüm yerel IP’lerde (0.0.0.0) 9501 portunu dinleyen HTTP sunucusu oluştur $server = new Server("0.0.0.0", 9501); // Sunucu ayarları (isteğe bağlı) // $server->set([ // 'worker_num' => 4, // İşçi işlemi sayısı // 'daemonize' => false, // Arka planda çalışsın mı // ]); // İstek olayını dinle $server->on("request", function (Request $request, Response $response) { // Yanıt başlığı ayarla $response->header("Content-Type", "text/plain"); // Yanıt gövdesini ayarla $response->end("Hello ServBay with Swoole!"); }); // Sunucu başlatıldığında (isteğe bağlı) $server->on("start", function (Server $server) { echo "Swoole http server is started at http://0.0.0.0:9501\n"; }); // Sunucuyu başlat $server->start(); echo "Swoole server stopped.\n"; // Bu satır sunucu durduktan sonra çalışır
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35Not:
require __DIR__ . '/../vendor/autoload.php';
satırını, Composer ile başka Swoole eklentileri (örn.swoole/ide-helper
veya bir Swoole çerçevesi) yüklediyseniz bırakın; saf Swoole kodunda genellikle gerekmez.Sunucuyu Komut Satırından Çalıştırın ServBay’in veya sisteminizin terminalini açın, proje klasörünüze gidin (
/Applications/ServBay/www/my-swoole-app/
). Komut satırında ServBay’in yönettiği PHP sürümünü kullandığınızdan emin olun (which php
ile yolu kontrol edebilir ya da ServBay’in terminalinden açabilirsiniz).Şu komutla Swoole sunucusunu başlatın:
shphp public/index.php
1Her şey yolundaysa, terminalde "Swoole http server is started at http://0.0.0.0:9501" şeklinde bir çıktı görürsünüz.
Görsel: Terminal’de Swoole sunucu çalışıyor
Test Etme Sunucu başladıktan sonra tarayıcıda
http://localhost:9501
adresine gidin; sayfada "Hello ServBay with Swoole!" mesajını göreceksiniz.Swoole sunucusunu sonlandırmak için terminalde
Ctrl + C
tuşlarına basın.
Dikkat Edilmesi Gerekenler
- Çalışma Biçimi: Bu örnekte, Swoole sunucusu komut satırından doğrudan başlatılıyor. Bu yöntem, rezident servisler geliştirmek için uygundur. Geleneksel web uygulamaları (Laravel/Symfony/WordPress gibi) genelde PHP-FPM ile birlikte, Caddy veya Nginx web sunucusu üzerinden çalışır. Eğer bu çerçeveleri Swoole ortamında çalıştırmak istiyorsanız (örneğin Hyperf, Swoole-Laravel gibi), ilgili çerçevenin kendi başlatma betiklerini kullanmanız gerekir ve süreç, saf Swoole’dakine benzer şekilde ayrı bir işlem olarak yürütülür.
- Port Kullanımı: Swoole sunucusu, belirttiğiniz portu dinler (örnekte 9501); bu portun başka bir uygulama tarafından kullanılmadığından emin olun.
- Hata Günlükleri: Swoole'un hata ve çıktıları, genellikle çalıştırıldığı terminalde görüntülenir veya yapılandırmanıza bağlı olarak belirli bir günlük dosyasına yazılır.
Sıkça Sorulan Sorular (SSS)
S: ServBay arayüzünde Swoole’u etkinleştirdim, ancak phpinfo()
sayfasında Swoole bilgisi göremiyorum, ne yapmalıyım?
C: Şu noktaları kontrol edin:
- Doğru PHP sürümünün
phpinfo()
sayfasını incelediğinizden emin olun. ServBay aynı anda birden çok PHP sürümünü çalıştırabilir; sitenizin veya terminalinizin kullandığı sürüm mü etkinleştirilen Swoole’a sahip? - ServBay arayüzünde değişiklikleri kaydedip ilgili PHP servislerini yeniden başlattınız mı?
- Eğer
swoole.ini
dosyasını manuel düzenlediyseniz, dosya yolu, adı veextension = swoole.so
satırı doğru ve yorumsuz (başında;
olmadan) mu?
S: Swoole örneğini çalıştırırken Class 'Swoole\Http\Server' not found
hatası alıyorum. Neden?
C: Genellikle, Swoole uzantısı kullanılan PHP ortamında yüklü değildir. Yukarıdaki adımları tekrar inceleyin ve Swoole’un etkin olduğunu doğrulayın. Ayrıca, terminalde php public/index.php
komutu ile başlatırken doğru PHP sürümünü kullandığınızdan emin olun. Kontrol için terminalde php -m | grep swoole
komutunu çalıştırabilirsiniz; çıktı geliyorsa, modül yüklüdür.
Özet
ServBay ile PHP Swoole uzantısını etkinleştirmek son derece kolaydır. İster kullanıcı dostu arayüzle ister yapılandırma dosyalarını düzenleyerek, seçili PHP sürümlerinde Swoole’u hızla aktive edebilir; böylece yüksek performanslı, asenkron web uygulamaları geliştirme yolculuğunuzu başlatabilirsiniz. Swoole’un sunduğu güçlü olanaklarla, çok daha hızlı yanıtlayan ve yüksek eşzamanlılığa sahip PHP servisleri oluşturabilirsiniz. ServBay, ortam yönetimini sizin adınıza üstlenerek süreçleri basitleştirir ve sizi yalnızca kodunuza odaklanmaya teşvik eder.