函数名:ZMQDevice::setIdleCallback()
适用版本:ZMQ extension 1.1.0 及以上版本
用法:ZMQDevice::setIdleCallback() 方法用于设置当ZMQ 设备处于空闲状态时的回调函数。空闲状态指的是设备没有进行任何 I/O 操作的状态。
语法: bool ZMQDevice::setIdleCallback(callable $cb_func, int $timeout = -1)
参数:
- $cb_func: 回调函数,当设备处于空闲状态时会被调用。回调函数必须接受一个整数参数,表示空闲时长(以毫秒为单位)。
- $timeout: 可选参数,设备在空闲状态下等待的超时时间,以毫秒为单位。默认值为-1,表示无限等待。
返回值: 成功时返回 true,失败时返回 false。
示例: 以下示例展示了如何使用 ZMQDevice::setIdleCallback() 方法来设置设备的空闲回调函数。
<?php
// 回调函数
function idleCallback($idleTime) {
echo "设备已空闲 " . $idleTime . " 毫秒\n";
}
// 创建 ZMQ 上下文
$context = new ZMQContext();
// 创建 ZMQ 设备
$device = new ZMQDevice($context->getSocket(ZMQ::SOCKET_ROUTER), $context->getSocket(ZMQ::SOCKET_DEALER), $context->getSocket(ZMQ::SOCKET_PUB));
// 设置空闲回调函数
$device->setIdleCallback('idleCallback');
// 启动设备
$device->run();
?>
在上述示例中,我们首先定义了一个名为 idleCallback() 的回调函数,它接受一个参数 $idleTime,表示设备空闲的时长。然后,我们创建了一个 ZMQ 上下文,接着创建了一个 ZMQ 设备。通过调用 setIddleCallback() 方法,将回调函数 idleCallback() 设置为设备的空闲回调函数。最后,通过调用 run() 方法启动设备。
当设备处于空闲状态时,idleCallback() 函数会被调用,并将空闲时长以毫秒为单位输出到屏幕上。