Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php inotify阻塞但超时_Php_Blocking_Inotify - Fatal编程技术网

php inotify阻塞但超时

php inotify阻塞但超时,php,blocking,inotify,Php,Blocking,Inotify,我想使用php的pecl扩展名,并使用inotify_read()函数来检测文件中的更改 作为一个故障保护,我想为inotify_read函数指定一个超时值,这样我就不会永远阻塞,以防引发并错过事件 是否有人知道如何使用stream_select函数阻止指定的秒数,但如果在inotify_读取时引发事件,则立即返回 我知道有一种方法可以执行inotify_读取非阻塞,但我不想坐在那里进行轮询,也不想在文件更改发生时与收到通知时之间出现延迟 我可以使用pcntl_alarm来中断系统调用,但我希望

我想使用php的pecl扩展名,并使用inotify_read()函数来检测文件中的更改

作为一个故障保护,我想为inotify_read函数指定一个超时值,这样我就不会永远阻塞,以防引发并错过事件

是否有人知道如何使用stream_select函数阻止指定的秒数,但如果在inotify_读取时引发事件,则立即返回

我知道有一种方法可以执行inotify_读取非阻塞,但我不想坐在那里进行轮询,也不想在文件更改发生时与收到通知时之间出现延迟


我可以使用pcntl_alarm来中断系统调用,但我希望不会太激烈。

看起来像是pecl inotify_init()函数在底层文件描述符周围返回一个php_流包装器。因此,是的,您应该能够使用stream_select()来等待某些东西向inotify描述符发送信号

类似于以下的方法应该可以工作:

$in = inotify_init();
stream_set_blocking($in, false); // probably a good idea to make it non-blocking
$r = array($in);
$timeout = 10;
$n = stream_select($r, $w = array(), $e = array(), $timeout);
if ($n == 0) {
   // Timed out, so do something else
} else {
   // We know that inotify_read will not block; use it and process
   // the results
}

感谢您解释如何使用文件描述符-您应该将代码添加到php手册页!