本文整理汇总了PHP中Workerman\Lib\Timer::init方法的典型用法代码示例。如果您正苦于以下问题:PHP Timer::init方法的具体用法?PHP Timer::init怎么用?PHP Timer::init使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Workerman\Lib\Timer
的用法示例。
在下文中一共展示了Timer::init方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: init
/**
* 初始化一些环境变量
*
* @return void
*/
public static function init()
{
// 如果没设置$pidFile,则生成默认值
if (empty(self::$pidFile)) {
$backtrace = debug_backtrace();
self::$_startFile = $backtrace[count($backtrace) - 1]['file'];
self::$pidFile = sys_get_temp_dir() . "/workerman." . str_replace('/', '_', self::$_startFile) . ".pid";
}
// 没有设置日志文件,则生成一个默认值
if (empty(self::$logFile)) {
self::$logFile = __DIR__ . '/../server.log';
}
// 标记状态为启动中
self::$_status = self::STATUS_STARTING;
// 启动时间戳
self::$_globalStatistics['start_timestamp'] = time();
Base::getLog()->debug(__METHOD__ . ' worker start timestamp', ['time' => self::$_globalStatistics['start_timestamp']]);
// 设置status文件位置
self::$statusFile = sys_get_temp_dir() . '/workerman.status';
Base::getLog()->debug(__METHOD__ . ' set status file', ['file' => self::$statusFile]);
// 尝试设置进程名称(需要php>=5.5或者安装了proctitle扩展)
self::setProcessTitle('WorkerMan: master process start_file=' . self::$_startFile);
// 初始化ID
self::initId();
// 初始化定时器
Timer::init();
}
示例2: run
/**
* 运行worker实例
*/
public function run()
{
// 设置自动加载根目录
Autoloader::setRootPath($this->_appInitPath);
// 则创建一个全局事件轮询
if (extension_loaded('libevent')) {
self::$globalEvent = new Libevent();
} else {
self::$globalEvent = new Select();
}
// 监听_mainSocket上的可读事件(客户端连接事件)
if ($this->_socketName) {
if ($this->transport !== 'udp') {
self::$globalEvent->add($this->_mainSocket, EventInterface::EV_READ, array($this, 'acceptConnection'));
} else {
self::$globalEvent->add($this->_mainSocket, EventInterface::EV_READ, array($this, 'acceptUdpConnection'));
}
}
// 用全局事件轮询初始化定时器
Timer::init(self::$globalEvent);
// 如果有设置进程启动回调,则执行
if ($this->onWorkerStart) {
call_user_func($this->onWorkerStart, $this);
}
// 子进程主循环
self::$globalEvent->loop();
}
示例3: run
/**
* Run worker instance.
* @return void
*/
public function run()
{
//Update process state.
self::$_status = self::STATUS_RUNNING;
// Eegister shutdown function for checking errors.
register_shutdown_function(array("\\Workerman\\Worker", 'checkErrors'));
// Set autoload root path.
Autoloader::setRootPath($this->_autoloadRootPath);
// Create a global event loop.
if (!self::$globalEvent) {
$eventLoopClass = "\\Workerman\\Events\\" . ucfirst(self::getEventLoopName());
self::$globalEvent = new $eventLoopClass();
// Register a listener to be notified when server socket is ready to read.
if ($this->_socketName) {
if ($this->transport !== 'udp') {
self::$globalEvent->add($this->_mainSocket, EventInterface::EV_READ, array($this, 'acceptConnection'));
} else {
self::$globalEvent->add($this->_mainSocket, EventInterface::EV_READ, array($this, 'acceptUdpConnection'));
}
}
}
// Reinstall signal.
self::reinstallSignal();
// Init Timer.
Timer::init(self::$globalEvent);
// Try to emit onWorkerStart callback.
if ($this->onWorkerStart) {
try {
call_user_func($this->onWorkerStart, $this);
} catch (\Exception $e) {
echo $e;
exit(250);
}
}
// Main loop.
self::$globalEvent->loop();
}
示例4: run
/**
* 运行worker实例
*/
public function run()
{
// 注册进程退出回调,用来检查是否有错误
register_shutdown_function(array("\\Workerman\\Worker", 'checkErrors'));
// 设置自动加载根目录
Autoloader::setRootPath($this->_appInitPath);
// 如果没有全局事件轮询,则创建一个
if (!self::$globalEvent) {
if (extension_loaded('libevent')) {
self::$globalEvent = new Libevent();
} else {
self::$globalEvent = new Select();
}
// 监听_mainSocket上的可读事件(客户端连接事件)
if ($this->_socketName) {
if ($this->transport !== 'udp') {
self::$globalEvent->add($this->_mainSocket, EventInterface::EV_READ, array($this, 'acceptConnection'));
} else {
self::$globalEvent->add($this->_mainSocket, EventInterface::EV_READ, array($this, 'acceptUdpConnection'));
}
}
}
// 重新安装事件处理函数,使用全局事件轮询监听信号事件
self::reinstallSignal();
// 用全局事件轮询初始化定时器
Timer::init(self::$globalEvent);
// 如果有设置进程启动回调,则执行
if ($this->onWorkerStart) {
call_user_func($this->onWorkerStart, $this);
}
// 子进程主循环
self::$globalEvent->loop();
}
示例5: run
/**
* 运行worker实例
*/
public function run()
{
//更新 Worker 状态
self::$_status = self::STATUS_RUNNING;
// 注册进程退出回调,用来检查是否有错误
register_shutdown_function(array("\\Workerman\\Worker", 'checkErrors'));
// 设置自动加载根目录
Autoloader::setRootPath($this->_appInitPath);
// 如果没有全局事件轮询,则创建一个
if (!self::$globalEvent) {
$eventLoopClass = "\\Workerman\\Events\\" . ucfirst(self::getEventLoopName());
self::$globalEvent = new $eventLoopClass();
// 监听_mainSocket上的可读事件(客户端连接事件)
if ($this->_socketName) {
if ($this->transport !== 'udp') {
self::$globalEvent->add($this->_mainSocket, EventInterface::EV_READ, array($this, 'acceptConnection'));
} else {
self::$globalEvent->add($this->_mainSocket, EventInterface::EV_READ, array($this, 'acceptUdpConnection'));
}
}
}
// 重新安装事件处理函数,使用全局事件轮询监听信号事件
self::reinstallSignal();
// 用全局事件轮询初始化定时器
Timer::init(self::$globalEvent);
// 如果有设置进程启动回调,则执行
if ($this->onWorkerStart) {
try {
call_user_func($this->onWorkerStart, $this);
} catch (\Exception $e) {
echo $e;
exit(250);
}
}
// 子进程主循环
self::$globalEvent->loop();
}