İşletme Başlatma
Bazen bir süreç başlatıldıktan sonra bazı işletme başlatma işlemleri yapmamız gerekir. Bu başlatma işlemi, süreç yaşam döngüsünde yalnızca bir kez gerçekleştirilir; örneğin, süreç başlatıldıktan sonra bir zamanlayıcı ayarlamak veya veritabanı bağlantısını başlatmak gibi. Aşağıda bunu açıklayacağız.
Prensip
İşlem Akışı bölümünde açıklandığına göre, webman süreç başlatıldıktan sonra config/bootstrap.php
(dahil config/plugin/*/*/bootstrap.php
) dosyasında ayarlanan sınıfları yükleyecek ve bu sınıfların start metodunu çağıracaktır. Start metodunda işletme kodumuzu ekleyerek, süreç başlatıldıktan sonra işletme başlatma işlemini tamamlayabiliriz.
Süreç
Diyelim ki, mevcut sürecin bellek kullanımını düzenli olarak raporlayacak bir zamanlayıcı oluşturmak istiyoruz, bu sınıfa MemReport
adını vereceğiz.
Komut Çalıştırma
Komut php webman make:bootstrap MemReport
yazarak başlatma dosyası app/bootstrap/MemReport.php
oluşturun.
İpucu
Eğer webman'ınızdawebman/console
yüklü değilse, komutcomposer require webman/console
yazarak yükleyin.
Başlatma Dosyasını Düzenleme
app/bootstrap/MemReport.php
dosyasını düzenleyin, içeriği aşağıda gibidir:
<?php
namespace app\bootstrap;
use Webman\Bootstrap;
class MemReport implements Bootstrap
{
public static function start($worker)
{
// Komut satırı ortamı mı ?
$is_console = !$worker;
if ($is_console) {
// Eğer komut satırı ortamında bu başlatmayı yapmak istemiyorsanız, burada doğrudan dönüş yapın
return;
}
// Her 10 saniyede bir çalışacak
\Workerman\Timer::add(10, function () {
// Gösterim kolaylığı için, burada raporlama sürecini çıktı ile değiştirdik
echo memory_get_usage() . "\n";
});
}
}
İpucu
Komut satırında kullanıldığında, framework deconfig/bootstrap.php
ayarındaki start metodunu çalıştıracak,$worker
değerinin null olup olmadığını kontrol ederek komut satırı ortamında olup olmadığımızı belirleyebiliriz, böylece işletme başlatma kodunu çalıştırıp çalıştırmayacağımıza karar verebiliriz.
Süreç Başlatıldığında Yapılandırma
config/bootstrap.php
dosyasını açarak MemReport
sınıfını başlangıç öğelerine ekleyin.
return [
// ...diğer yapılandırmalar burada atlandı...
app\bootstrap\MemReport::class,
];
Bu şekilde bir işletme başlatma sürecini tamamlamış oluyoruz.
Ek Açıklama
Özelleştirilmiş süreçler başlatıldıktan sonra da config/bootstrap.php
ayarındaki start metodu çalıştırılacak, mevcut sürecin ne olduğunu belirlemek için $worker->name
kullanılarak $worker->id
ile hangi süreç olduğunu kontrol edebiliriz, ardından işletme başlatma kodunuzu hangi süreçte çalıştıracağımıza karar verebiliriz; örneğin, yalnızca webman’ın 0. sürecinde çalıştırmak istiyorsak, MemReport.php
içeriği aşağıdaki gibi olacaktır:
<?php
namespace app\bootstrap;
use Webman\Bootstrap;
class MemReport implements Bootstrap
{
public static function start($worker)
{
// Komut satırı ortamı mı ?
$is_console = !$worker;
if ($is_console) {
// Eğer komut satırı ortamında bu başlatmayı yapmak istemiyorsanız, burada doğrudan dönüş yapın
return;
}
// Yalnızca webman'ın 0. sürecinde çalıştır
if ($worker->name != 'webman' && $worker->id != 0) {
return;
}
// Her 10 saniyede bir çalışacak
\Workerman\Timer::add(10, function () {
// Gösterim kolaylığı için, burada raporlama sürecini çıktı ile değiştirdik
echo memory_get_usage() . "\n";
});
}
}