<?php
use Workerman\Lib\Timer;
use Workerman\Worker;
require_once "./vendor/autoload.php";
$worker = new Worker();
$worker->onWorkerStart = function($worker){
Timer::add(0.001,function() use ($worker){
echo microtime(true).PHP_EOL;
});
};
Worker::runAll();
这段代码在ubuntu上跑打印出来的是有4毫秒的时间差,但是在centos上能精确到1毫秒,两个环境都是安装了event扩展,请问大佬们这是什么回事呢?系统的定时器精度问题吗?十分感谢;
有误差正常的,cpu分片、进程调度算法、系统负载、程序代码都会影响。比如当cpu忙于其它任务时,来不及触发定时器就很有可能造成定时器不准。
很是奇怪,同段代码试了macos、centos、ubuntu这三个系统,Ubuntu的只能精确定时4毫秒,其他两个系统可以精确定时1毫秒;而且如果把Ubuntu环境的event扩展关掉,使用Select类的话,定时器就能精确定时1毫秒,也不知道是不是Ubuntu需要开启什么