int \Workerman\Timer::add(float $time_interval, callable $callback [,$args = array(), bool $persistent = true])
การเรียกใช้ฟังก์ชั่นหรือเมธอดของคลาสต่าง ๆ ในช่วงเวลาที่กำหนดไว้
หมายเหตุ: ตัวจับเวลาทำงานในกระบวนการปัจจุบัน โดยไม่มีการสร้างกระบวนการหรือเธรดใหม่ใน workerman
พารามิเตอร์
time_interval
ระยะเวลาที่ฟังก์ชันจะทำงาน หน่วยเป็นวินาที รองรับทศนิยม และสามารถแม่นยำถึง 0.001 คือประมาณหนึ่งวินาที
callback
ฟังก์ชัน call back `โปรดทราบ: หากฟังก์ชันของ CallBack เป็นเมธอดของคลาส แม้ว่าว่าเมธอด
args
พารามิเตอร์ของฟังก์ชัน call back ต้องเป็นอาร์เรย์ที่มีสมาชิกเป็นค่าพารามิเตอร์
persistent
เป็นการบ่งบอกว่ามันมีความยั่งยืนหรือไม่ หากต้องการให้ตัวจับเวลาทำงานเพียงครั้งเดียว ให้ระบุเป็น false( งานเพียงครั้งที่กระบวนการที่ครบก็จะขยายตัวเองออกไปโดยอัตโณมให้ต้องไปเรียกใช้Timer::del()
ให้ทำการยุติการทำงานโดยอัตโนมัติ ) ค่าเริ่มต้นคือ true ซึ่งหมายถึงการทำงานต่อเนื่อง
ค่าที่คืนค่า
ส่งค่ากลับให้เป็นจำนวนเต็ม แทน timerid ของตัวจับเวลา สามารถทำการยุติตัวจับเวลาได้โดยการเรียกใช้ Timer::del($timerid)
ตัวอย่าง
1. ฟังก์ชันทำหน้าที่เป็นฟังก์ชันลับ
use Workerman\Worker;
use Workerman\Timer;
require_once __DIR__ . '/vendor/autoload.php';
$task = new Worker();
$task->count = 1;
$task->onWorkerStart = function(Worker $task)
{
$time_interval = 2.5;
Timer::add($time_interval, function()
{
echo "task run\n";
});
};
Worker::runAll();
2. ตั้งจับเวลาระห่่ลบที่เฉพาะตัว
มี worker อยู่ 4 ตัว ตั้งค่าไว้ใน 0 บนตัวจับเวลาไว้
use Workerman\Worker;
use Workerman\Timer;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker();
$worker->count = 4;
$worker->onWorkerStart = function(Worker $worker)
{
if($worker->id === 0)
{
Timer::add(1, function(){
echo "4 worker process, set the timer only in process number 0\n";
});
}
};
Worker::runAll();