Workerman Projesi Oluşturma ve Çalıştırma
Workerman Nedir?
Workerman, yüksek performanslı PHP asenkron ağ iletişim kütüphanesidir ve yüksek eşzamanlılığa sahip, yüksek performanslı ağ uygulamaları geliştirmek için tasarlanmıştır. Web sunucuları, WebSocket sunucuları, TCP/UDP sunucuları gibi çeşitli uygulamaları oluşturmak için kullanılabilir ve gerçek zamanlı sohbet, oyun sunucuları, nesnelerin interneti gibi senaryolara uygundur. Workerman, hafif, kullanımı kolay ve verimli özelliklere sahip olup, geliştiricilerin karmaşık ağ uygulamalarını kolayca gerçekleştirmelerine olanak tanır.
Workerman'in Ana Özellikleri ve Avantajları
- Yüksek performans: Olay tabanlı ve asenkron, engellemesiz I/O'ya dayalı olup, çok sayıda eşzamanlı bağlantıyı işleyebilir.
- Çoklu protokol desteği: HTTP, WebSocket, TCP, UDP gibi çeşitli ağ protokollerini destekler.
- Kullanım kolaylığı: Geliştiricilerin hızlıca işe başlayabilmesi için basit ve kullanımı kolay API sağlar.
- Esneklik ve genişletilebilirlik: Eklentiler ve genişletmeler aracılığıyla daha fazla işlevsellik gerçekleştirilebilir.
- Güçlü topluluk desteği: Aktif bir geliştirici topluluğuna ve zengin belge kaynaklarına sahiptir.
Workerman, geliştiricilerin yüksek performanslı ağ uygulamalarını hızlı bir şekilde oluşturmasına yardımcı olabilir ve yüksek eşzamanlı işlem gerektiren çeşitli durumlar için uygundur.
Workerman Kullanarak Basit Bir Web Sunucusu Oluşturma ve Çalıştırma
Bu makalede, Workerman kullanarak ServBay ortamında basit bir web sunucusu oluşturmayı ve çalıştırmayı anlatacağız. Workerman nasıl kurulacağı, temel sunucu kodunun nasıl yazılacağı ve sunucunun nasıl çalıştırılacağı gösterilecektir.
TIP
ServBay, geliştiricilere web sitelerini yönetimi kolaylaştırmak için /Applications/ServBay/www
dizinine yerleştirmelerini tavsiye eder.
Workerman Kurulumu
Composer Kurulumu
ServBay fabrikadan Composer ile birlikte gelir, ayrı kurulum yapılması gerekmez.
Proje Dizini Oluşturma
Yeni bir proje dizini oluşturun ve bu dizine girin:
bashcd /Applications/ServBay/www mkdir servbay-workerman-app cd servbay-workerman-app
1
2
3Workerman Kurulumu
Composer kullanarak Workerman'i kurun:
bashcomposer require workerman/workerman
1
Web Sunucusu Kodunu Yazma
Proje dizininde server.php
dosyasını oluşturun ve aşağıdaki kodu ekleyin:
<?php
require __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
// 8080 portunu dinleyen bir Web sunucusu örneği oluşturun
$webServer = new Worker('http://0.0.0.0:8080');
// İstekleri işlemek için 4 işlem başlatın
$webServer->count = 4;
// İstek işleme mantığını tanımlayın
$webServer->onMessage = function($connection, $request) {
$connection->send('Hello ServBay!');
};
// Tüm Worker örneklerini çalıştırın
Worker::runAll();
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Web Sunucusunu Çalıştırma
Web sunucusunu başlatmak için proje dizininde aşağıdaki komutu çalıştırın:
php server.php start
Başlatıldıktan sonra http://localhost:8080
adresini tarayıcınızda ziyaret edebilirsiniz, sayfada Hello ServBay!
çıktısını göreceksiniz.
Workerman Kullanarak WebSocket Sunucusu Oluşturma
Web sunucusunun yanı sıra, Workerman WebSocket sunucusu oluşturmak için de kullanılabilir. İşte basit bir WebSocket sunucusu örneği.
WebSocket Sunucusu Kodunu Yazma
Proje dizininde
websocket_server.php
dosyasını oluşturun ve aşağıdaki kodu ekleyin:php<?php require __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; // 8081 portunu dinleyen bir WebSocket sunucusu örneği oluşturun $wsServer = new Worker('websocket://0.0.0.0:8081'); // İstekleri işlemek için 4 işlem başlatın $wsServer->count = 4; // Bağlantı kurulduğunda işleme mantığını tanımlayın $wsServer->onConnect = function($connection) { echo "New connection\n"; }; // Mesaj alındığında işleme mantığını tanımlayın $wsServer->onMessage = function($connection, $data) { $connection->send('Received: ' . $data); }; // Bağlantı kapatıldığında işleme mantığını tanımlayın $wsServer->onClose = function($connection) { echo "Connection closed\n"; }; // Tüm Worker örneklerini çalıştırın Worker::runAll();
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
28WebSocket Sunucusunu Çalıştırma
WebSocket sunucusunu başlatmak için proje dizininde aşağıdaki komutu çalıştırın:
bashphp websocket_server.php start
1Başlatıldıktan sonra, bir WebSocket istemcisi (örneğin, tarayıcıda bir WebSocket debug aracı) kullanarak
ws://localhost:8081
adresine bağlanabilir ve mesaj gönderebilirsiniz, sunucu alınan mesajı geri yansıtacaktır.
Workerman Kullanarak TCP Sunucusu Oluşturma
Workerman aynı zamanda TCP sunucusu oluşturmak için de kullanılabilir. İşte basit bir TCP sunucusu örneği.
TCP Sunucusu Kodunu Yazma
Proje dizininde
tcp_server.php
dosyasını oluşturun ve aşağıdaki kodu ekleyin:php<?php require __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; // 8082 portunu dinleyen bir TCP sunucusu örneği oluşturun $tcpServer = new Worker('tcp://0.0.0.0:8082'); // İstekleri işlemek için 4 işlem başlatın $tcpServer->count = 4; // Bağlantı kurulduğunda işleme mantığını tanımlayın $tcpServer->onConnect = function($connection) { echo "New connection\n"; }; // Mesaj alındığında işleme mantığını tanımlayın $tcpServer->onMessage = function($connection, $data) { $connection->send('Received: ' . $data); }; // Bağlantı kapatıldığında işleme mantığını tanımlayın $tcpServer->onClose = function($connection) { echo "Connection closed\n"; }; // Tüm Worker örneklerini çalıştırın Worker::runAll();
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
28TCP Sunucusunu Çalıştırma
TCP sunucusunu başlatmak için proje dizininde aşağıdaki komutu çalıştırın:
bashphp tcp_server.php start
1Başlatıldıktan sonra, bir TCP istemcisi (örneğin
telnet
veyanc
komutu) kullanaraklocalhost:8082
adresine bağlanabilir ve mesaj gönderebilirsiniz, sunucu alınan mesajı geri yansıtacaktır.
Özet
Yukarıdaki adımlarla, ServBay kullanarak Workerman projesi oluşturup çalıştırdınız ve Workerman'in işlevselliğini kullanarak Web sunucusu, WebSocket sunucusu ve TCP sunucusu oluşturdunuz. Workerman'in yüksek performansı ve kullanım kolaylığı, onu yüksek eşzamanlılığa ve yüksek performansa sahip ağ uygulamaları oluşturmak için çok uygun hale getirir. Umarım bu makale, Workerman'e hızlıca başlamanıza ve projelerinizde kullanmanıza yardımcı olur.