workerman/crontab
الوصف
workerman/crontab هو برنامج مهام مجدولة يعتمد على workerman، مشابه لبرنامج crontab في لينكس. يدعم workerman/crontab جدولة بمعدل ثواني.
لاستخدام
workerman/crontab، يجب أولاً ضبط المنطقة الزمنية لـ PHP، وإلا فقد لا تتوافق النتائج مع التوقعات.
توضيح الوقت
0 1 2 3 4 5
| | | | | |
| | | | | +------ يوم الأسبوع (0 - 6) (الأحد=0)
| | | | +------ الشهر (1 - 12)
| | | +-------- يوم الشهر (1 - 31)
| | +---------- الساعة (0 - 23)
| +------------ الدقائق (0 - 59)
+-------------- الثواني (0-59)[يمكن تجاهلها، إذا لم تكن هناك خانة للثواني، فإن أقل دقة زمنية هي الدقيقة]
التثبيت
composer require workerman/crontab
المثال
<?php
use Workerman\Worker;
require __DIR__ . '/vendor/autoload.php';
use Workerman\Crontab\Crontab;
$worker = new Worker();
// ضبط المنطقة الزمنية، لتجنب عدم تطابق النتائج مع التوقعات
date_default_timezone_set('PRC');
$worker->onWorkerStart = function () {
// تنفيذ في الثانية الأولى من كل دقيقة.
new Crontab('1 * * * * *', function(){
echo date('Y-m-d H:i:s')."\n";
});
// تنفيذ في السابعة وخمسون دقيقة من كل يوم، لاحظ أنه تم تجاهل خانة الثواني هنا.
new Crontab('50 7 * * *', function(){
echo date('Y-m-d H:i:s')."\n";
});
};
Worker::runAll();
ملاحظة
لن تبدأ المهام المجدولة في التنفيذ مباشرة، جميع المهام المجدولة ستبدأ العد نحو الدقيقة التالية فقط.
مثل المؤقت في workerman، فإن جميع المهام تُنفّذ داخل العملية الحالية.
إذا لم يتم تمكين التعاون مع swoole/swow، إذا لم تكتمل المهمة قبل بدء الدورة التالية، فسوف تنتظر حتى تكتمل المهمة الحالية، ستتأخر المهام الجديدة في التنفيذ.
إذا تم تمكين التعاون مع swoole/swow، إذا لم تكتمل المهمة السابقة، قد تُنفّذ المهمة التالية على الفور، دون الانتظار.
الواجهة
Crontab::destroy()
تدمير المؤقت
$crontab = new Crontab('1 * * * * *', function(){
echo date('Y-m-d H:i:s')."\n";
});
$crontab->destroy();