crontab zamanlayıcı bileşeni
Açıklama
workerman/crontab, Linux'taki crontab'a benzer, fakat workerman/crontab saniye seviyesinde zamanlamayı destekler.
Zaman açıklaması:
0   1   2   3   4   5
|   |   |   |   |   |
|   |   |   |   |   +------ haftanın günü (0 - 6) (Pazar=0)
|   |   |   |   +------ ay (1 - 12)
|   |   |   +-------- ayın günü (1 - 31)
|   |   +---------- saat (0 - 23)
|   +------------ dakika (0 - 59)
+-------------- saniye (0-59)[atlayabilir, eğer 0'lık yoksa, en küçük zaman dilimi dakikadır]Proje Adresi
https://github.com/walkor/crontab
Kurulum
composer require workerman/crontabKullanım
Adım 1: Yeni bir proses dosyası oluşturun app/process/Task.php
<?php
namespace app\process;
use Workerman\Crontab\Crontab;
class Task
{
    public function onWorkerStart()
    {
        // Her saniye bir kez çalıştır
        new Crontab('*/1 * * * * *', function(){
            echo date('Y-m-d H:i:s')."\n";
        });
        // Her 5 saniye bir kez çalıştır
        new Crontab('*/5 * * * * *', function(){
            echo date('Y-m-d H:i:s')."\n";
        });
        // Her dakika bir kez çalıştır
        new Crontab('0 */1 * * * *', function(){
            echo date('Y-m-d H:i:s')."\n";
        });
        // Her 5 dakika bir kez çalıştır
        new Crontab('0 */5 * * * *', function(){
            echo date('Y-m-d H:i:s')."\n";
        });
        // Her dakikanın ilk saniyesinde çalıştır
        new Crontab('1 * * * * *', function(){
            echo date('Y-m-d H:i:s')."\n";
        });
        // Her gün saat 7:50'de çalıştır, burada saniye kısmı atlanmıştır
        new Crontab('50 7 * * *', function(){
            echo date('Y-m-d H:i:s')."\n";
        });
    }
}Adım 2: Proses dosyasını webman ile başlatmak için yapılandırın
Yapılandırma dosyası config/process.php'yi açın ve aşağıdaki yapılandırmayı ekleyin
return [
    ....Diğer yapılandırmalar, burada atlanmıştır....
    'task'  => [
        'handler'  => app\process\Task::class
    ],
];Adım 3: webman'ı yeniden başlatın
Not: Zamanlayıcı görevleri hemen çalışmayacak, tüm zamanlayıcı görevleri bir sonraki dakikadan itibaren saymaya başlayacaktır.
Açıklama
crontab asenkron değildir, örneğin bir task işleminde A ve B adlı iki zamanlayıcı ayarlandığında, her ikisi de her saniye bir görev çalıştırıyorsa fakat A görevi 10 saniye sürüyorsa, B, A'nın tamamlanmasını beklemek zorunda kalacak, bu da B'nin yürütülmesinde gecikmelere neden olacaktır. Eğer iş için zaman aralıkları çok hassassa, hassas zamanlayıcı görevlerini ayrı bir proses içinde çalıştırmak gerekir, diğer zamanlayıcı görevlerden etkilenmemesi için. Örneğin config/process.php'de aşağıdaki yapılandırmayı yapabilirsiniz
return [
    ....Diğer yapılandırmalar, burada atlanmıştır....
    'task1'  => [
        'handler'  => process\Task1::class
    ],
    'task2'  => [
        'handler'  => process\Task2::class
    ],
];Zaman duyarlı zamanlayıcı görevlerini process/Task1.php dosyasına yerleştirin, diğer zamanlayıcı görevleri process/Task2.php dosyasına yerleştirin.
Daha fazla config/process.php yapılandırma açıklamaları için lütfen Özel Proses bölümüne bakınız.