onWorkerReload
Gerekli (workerman >= 3.2.5)
Açıklama:
callback Worker::$onWorkerReload
Bu özellik pek sık kullanılmaz.
Worker'ın bir reload sinyali aldığında yürütülecek geri çağrıyı ayarlamak için kullanılır.
onWorkerReload geri çağrısını, süreçleri yeniden başlatmaya gerek kalmadan iş yapılandırma dosyalarını yeniden yüklemek gibi birçok şey yapmak için kullanılabilirsiniz.
Dikkat:
Alt süreçler, reload sinyalini aldıklarında varsayılan olarak yeniden başlatma eylemini gerçekleştirirler, bu sayede yeni süreçler iş kodunu yeniden yükleyerek kod güncellemesini tamamlarlar. Bu nedenle, reload sonrası alt süreçler onWorkerReload geri çağrısını tamamladıktan sonra hemen çıkması normal bir durumdur.
Reload sinyalini aldıktan sonra alt sürecin yalnızca onWorkerReload'u yürütmesini, çıkmasını istemiyorsanız, Worker örneğini başlatırken ilgili Worker örneğinin reloadable özelliğini false olarak ayarlayabilirsiniz.
Geri Çağrı Fonksiyonunun Parametreleri
$worker
Yani Worker nesnesi
Örnek
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('websocket://0.0.0.0:8484');
// reloadable'ı false olarak ayarlayın, yani alt süreç reload sinyalini aldığında yeniden başlatma yapmasın
$worker->reloadable = false;
// reload gerçekleştikten sonra tüm istemcilere sunucunun reload uyguladığını bildirin
$worker->onWorkerReload = function(Worker $worker)
{
foreach($worker->connections as $connection)
{
$connection->send('worker reloading');
}
};
// Worker'ı çalıştır
Worker::runAll();
İpucu: Geri çağrı olarak anonim fonksiyon kullanmanın yanı sıra, burayı referans alarak diğer geri çağrı yazım biçimlerini de kullanabilirsiniz.