Yavaş İşlem İşleme
Bazen yavaş işlemleri işlememiz gerekebilir. Diğer istekleri etkilememek için, bu işlemler farklı durumlara göre farklı işleme yöntemleri kullanılabilir.
Mesaj Kuyruğu Kullanımı
Redis kuyruğu ve stomp kuyruğu için redis kuyruk ve stomp kuyruk sayfalarına bakınız.
Avantajlar
Ani büyük işlem isteklerine karşı kullanılabilir.
Dezavantajlar
Sonuçları doğrudan müşteriye dönmek mümkün değildir. Sonuçları göndermek için başka hizmetlerle birlikte çalışması gerekmektedir. Örneğin webman/push sonuçları göndermek için kullanılabilir.
Yeni HTTP Portu Ekleme
Not
Bu özellik webman-framework>=1.4 gerektirir.
Yavaş isteklerin doğrudan belirli bir grup işleme girdiği bir port eklemek için yeni bir HTTP portu eklenebilir. İşlem tamamlandıktan sonra sonuçları doğrudan müşteriye dönebilir.
Avantajlar
Verileri doğrudan müşteriye dönebilir.
Dezavantajlar
Ani büyük isteklere karşı kullanılamaz.
Uygulama Adımları
config/process.php
içine aşağıdaki yapılandırmayı ekleyin.
return [
// ... diğer yapılandırmalar burada kısaltıldı ...
'task' => [
'handler' => \Webman\App::class,
'listen' => 'http://0.0.0.0:8686',
'count' => 8, // Süreç sayısı
'user' => '',
'group' => '',
'reusePort' => true,
'constructor' => [
'request_class' => \support\Request::class, // Request class ayarı
'logger' => \support\Log::channel('default'), // Günlük örneği
'app_path' => app_path(), // Uygulama dizini konumu
'public_path' => public_path() // Genel dizin konumu
]
]
];
Bu şekilde yavaş arayüzlere, diğer işlemleri etkilemeden, bu süreç seti üzerinden http://127.0.0.1:8686/
üzerinden gidebilir.
Ön uç tarafının port farkını fark etmemesi için, nginx üzerine 8686 portuna bir proxy ekleyebilirsiniz. Varsayalım, yavaş arayüz istek yolları genellikle /tast
ile başlar, bu durumda nginx yapılandırması şu şekilde olacaktır:
upstream webman {
server 127.0.0.1:8787;
keepalive 10240;
}
# Yeni bir 8686 yukarıya doğru
upstream task {
server 127.0.0.1:8686;
keepalive 10240;
}
server {
server_name webman.com;
listen 80;
access_log off;
root /path/webman/public;
# /tast ile başlayan istekler 8686 portuna gider, lütfen /tast'ı ihtiyacınıza göre değiştirin
location /tast {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_pass http://task;
}
# Diğer istekler eski 8787 portuna gider
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Connection "";
if (!-f $request_filename){
proxy_pass http://webman;
}
}
}
Bu şekilde, müşteriler domain.com/tast/xxx
'i ziyaret ettiğinde, özel olarak 8686 portunu kullanarak işlem yapacaktır ve 8787 portunun işlemesini etkilemeyecektir.