workerman geliştiricilerinin bilmesi gereken birkaç sorun
1. Windows ortam sınırlamaları
Windows sisteminde workerman tek bir süreçte yalnızca 200+ bağlantıyı destekler.
Windows sisteminde count parametresi ile çoklu süreç ayarlanamaz.
Windows sisteminde status, stop, reload, restart gibi komutlar kullanılamaz.
Windows sisteminde daemon işlemi kullanılamaz, cmd penceresi kapandığında hizmet durur.
Windows sisteminde aynı dosyada birden fazla dinleyici başlatılamaz.
Linux sisteminde yukarıdaki sınırlamalar yoktur, önerilen resmi ortam için Linux sistemi, geliştirme ortamı için ise Windows sistemi kullanmaktır.
2. workerman apache veya nginx'e bağımlı değildir
Workerman kendisi zaten apache/nginx'e benzer bir konteynerdir, yeter ki PHP ortamı uygun olsun, workerman çalışabilir.
3. workerman komut satırından başlatılır
Başlatma yöntemi, apache'nin komutla başlatılması gibi (genelde web alanları workerman kullanamaz). Başlatma arayüzü aşağıdaki gibidir

4. Uzun bağlantılara mutlaka kalp atışı eklenmelidir
Uzun bağlantılara mutlaka kalp atışı eklenmelidir, uzun bağlantılara mutlaka kalp atışı eklenmelidir, uzun bağlantılara mutlaka kalp atışı eklenmelidir, önemli bir şeyi üç kez söylemiş olduk.
Uzun bağlantılar uzun süre iletişim kurmazsa, yönlendirme düğümleri tarafından temizlenebilir ve bağlantı kapanabilir.
workerman kalp atışı açıklaması, gatewayWorker kalp atışı açıklaması
5. İstemci ve sunucu protokolleri kesinlikle eşleşmelidir
Bu, geliştiricilerin çok sık karşılaştığı bir sorundur. Örneğin, istemci websocket protokolünü kullanıyorsa, sunucu da websocket protokolünü kullanmalıdır (sunucu new Worker('websocket://0.0.0.0...') ile) ki bağlantı sağlanabilsin ve iletişim kurulabilsin.
Tarayıcı adres çubuğunda websocket protokolü portuna erişmeye çalışmayın, websocket protokolü ile ham tcp protokolü portuna erişmeye çalışmayın, protokollerin eşleştiğinden emin olun.
Buradaki ilke, eğer İngilizlerle iletişim kuracaksanız İngilizce kullanmalısınız. Eğer Japonlarla iletişim kuracaksanız Japonca kullanmalısınız. Buradaki diller, iletişim protokollerine benzer, her iki tarafın (istemci ve sunucu) aynı dili kullanması gerektiği için iletişim sağlanabilir, aksi takdirde iletişim kurulamaz.
6. Bağlantı hatalarının olası nedenleri
Workerman kullanmaya başladığınızda sıkça karşılaşılan bir sorun, istemcinin sunucuya bağlanamamasıdır. Olası nedenler genellikle şunlardır:
- Sunucu güvenlik duvarı (bulut sunucusu güvenlik grubu dahil) bağlantıyı engelliyor (bu %50 oranında bir durumdur)
- İstemci ve sunucunun kullandığı protokoller tutarsız (bu %30 oranında bir durumdur)
- IP veya port hatası (bu %15 oranında bir durumdur)
- Sunucu başlatılmamış
7. exit die sleep ifadelerini kullanmayın
İşlemler exit die ifadeleri ile sona erdirildiğinde, süreç çıkışı beklenmedik bir hata ile (WORKER EXIT UNEXPECTED) sonuçlanır. Elbette, süreç çıkarsa hemen yeni bir süreç başlatılır ve hizmet devam eder. Geri dönmek gerekiyorsa, return çağrılabilir. sleep ifadesi, süreci uykuya alır ve bu süre zarfında hiçbir iş yapılmaz, çerçeve de çalışmayı durdurur, bu durumda süreç içindeki tüm istemci talepleri işlenemez.
8. pcntl_fork fonksiyonunu kullanmayın
pcntl_fork, yeni süreçler dinamik olarak oluşturmak için kullanılır, ancak iş kodunda pcntl_fork kullanırsanız, geri alınamayan yetim süreçler oluşabilir ve işin bozulmasına neden olabilir. İş kodundaki pcntl_fork, bağlantıları, mesajları, bağlantı kapanmalarını, zamanlayıcıları ve diğer olayların işlenmesini etkileyebilir ve öngörülemeyen hatalara neden olabilir.
9. İş kodunda sonsuz döngü olmamalıdır
İş kodunda sonsuz döngü olmamalıdır, aksi takdirde kontrol workerman çerçevesine geri verilemez, bu da diğer istemci mesajlarının alınmasını ve işlenmesini engeller.
10. Kod değişikliklerinde yeniden başlatma gereklidir
Workerman, sürekli bellekte çalışan bir çerçevedir, kod değişikliklerini görmek için workerman'ı yeniden başlatmak gerekir.
11. Uzun bağlantı uygulamaları için GatewayWorker çerçevesi önerilir
Birçok geliştirici workerman'ı uzun bağlantı uygulamaları geliştirmek için kullanmaktadır, örneğin anlık iletişim, nesnelerin interneti gibi, uzun bağlantı uygulamaları için doğrudan GatewayWorker çerçevesini kullanmaları önerilir, çünkü bu çerçeve workerman temelinde yeniden paketlenmiş olup uzun bağlantı uygulamalarını daha basit ve kullanışlı hale getirmektedir.
12. Daha yüksek eşzamanlılığı destekleme
Eğer işin eşzamanlı bağlantı sayısı 1000'i geçiyorsa, lütfen linux çekirdeğini optimize edin ve event uzantısını yükleyin.