İşletme Başlatma
Bazen bir işlem başlatıldıktan sonra işletme başlatma işlemleri yapmamız gerekebilir. Bu başlatma işlemi, işlem ömrü boyunca sadece bir kez çalışacaktır. Örneğin, işlem başlatıldıktan sonra bir zamanlayıcı ayarlamak veya veritabanı bağlantısını başlatmak gibi. Aşağıda bu konuya dair bir açıklama bulunmaktadır.
Prensip
İşlem Akışı kısmında belirtildiği gibi, webman işlem başladıktan sonra config/bootstrap.php
(dahil olmak üzere config/plugin/*/*/bootstrap.php
) dosyasında belirtilen sınıfları yükler ve sınıfların start metotlarını çalıştırır. Biz start metodu içerisine işletme kodlarını ekleyerek işlem başladıktan sonraki işletme başlatma işlemini gerçekleştirebiliriz.
Süreç
Örneğin, işlem başladıktan sonra iç bellek kullanımını düzenli aralıklarla raporlamak için bir zamanlayıcı yapmak istediğimizi düşünelim. Bu sınıfa MemReport
adını verdik.
Komutu Çalıştırın
php webman make:bootstrap MemReport
komutunu çalıştırarak başlatma dosyası olan app/bootstrap/MemReport.php
dosyasını oluşturun.
Not
Eğer webman'dawebman/console
yüklü değilse,composer require webman/console
komutunu çalıştırarak yükleyin.
Başlatma Dosyasını Düzenle
app/bootstrap/MemReport.php
dosyasını düzenleyerek aşağıdaki gibi bir içerik oluşturun:
<?php
namespace app\bootstrap;
use Webman\Bootstrap;
class MemReport implements Bootstrap
{
public static function start($worker)
{
// Bu komut satırı işletme ortamında mı çalışıyor?
$is_console = !$worker;
if ($is_console) {
// Eğer işletme ortamında bu başlatma işlemini çalıştırmak istemiyorsanız, burada doğrudan çıkın
return;
}
// Her 10 saniyede bir çalıştır
\Workerman\Timer::add(10, function () {
// Gösterim kolaylığı için, burada raporlama süreci yerine çıktı kullanıyoruz
echo memory_get_usage() . "\n";
});
}
}
Not
Komut satırı kullanırken, çerçeve ayrıcaconfig/bootstrap.php
dosyasında belirtilen start metotlarını çalıştırır. İşletme başlatma kodlarını çalıştırıp çalıştırmayacağımızı belirlemek için$worker
'ın null olup olmadığını kontrol edebiliriz.
İşlemle Birlikte Başlatma Dosyasını Yapılandırın
config/bootstrap.php
dosyasını açarak MemReport
sınıfını başlatma öğesine ekleyin.
return [
// ...Diğer yapılandırmalar burada kısaltılmıştır...
app\bootstrap\MemReport::class,
];
Bu şekilde işletme başlatma sürecini tamamlamış oluruz.
Ek Açıklamalar
Özel İşlemler başlatıldığında da config/bootstrap.php
dosyasında belirtilen start metotlarını çalıştırır. Hangi işlemin hangi işlem olduğunu belirlemek için $worker->name
ile mevcut işlemi kontrol edebilir ve bu işlemlere özgü işletme başlatma kodlarını çalıştırıp çalıştırmamaya karar verebiliriz. Örneğin, monitor işlemine gözetim yapmak istemiyoruz, bu durumda MemReport.php
içeriği aşağıdaki gibi olabilir:
<?php
namespace app\bootstrap;
use Webman\Bootstrap;
class MemReport implements Bootstrap
{
public static function start($worker)
{
// Bu komut satırı işletme ortamında mı çalışıyor?
$is_console = !$worker;
if ($is_console) {
// Eğer işletme ortamında bu başlatma işlemini çalıştırmak istemiyorsanız, burada doğrudan çıkın
return;
}
// monitor işlemi zamanlayıcıyı çalıştırmasın
if ($worker->name == 'monitor') {
return;
}
// Her 10 saniyede bir çalıştır
\Workerman\Timer::add(10, function () {
// Gösterim kolaylığı için, burada raporlama süreci yerine çıktı kullanıyoruz
echo memory_get_usage() . "\n";
});
}
}