gpt4 book ai didi

PHP Inotify 非阻塞方式

转载 作者:IT王子 更新时间:2023-10-29 01:12:10 26 4
gpt4 key购买 nike

我正在 linux 中读取一个文件,该文件是一个日志文件,它会不断更新文件已更改的天气并将其输出到网页。我使用 php inotify 来做,但我的问题是它正在阻塞。

我怎样才能使 php inotify 成为非阻塞的,这样我就可以在它监视文本文件的同时做其他事情?

<?php

$fd = inotify_init();


$watch_descriptor = inotify_add_watch($fd, '/tmp/temp.txt', IN_MODIFY);


touch('/tmp/temp.txt');


$events = inotify_read($fd);

$contents = file_get_contents('/tmp/temp.txt');
echo $contents;


inotify_rm_watch($fd, $watch_descriptor);
fclose($fd)

?>

或者我可以用 java 做这个吗?...谢谢。

最佳答案

是的,你可以。你看过手册了吗?它提供了非阻塞事件回调的例子?如果此答案不能充分回答您,请添加更多信息。

http://php.net/manual/en/function.inotify-init.php

// Open an inotify instance
$fd = inotify_init();

// - Using stream_set_blocking() on $fd
stream_set_blocking($fd, 0);

// Watch __FILE__ for metadata changes (e.g. mtime)
$watch_descriptor = inotify_add_watch($fd, __FILE__, IN_ATTRIB);

// generate an event
touch(__FILE__);

// this is a loop
while(true){

$events = inotify_read($fd); // Does no block, and return false if no events are pending

// do other stuff here, break when you want...
}

// Stop watching __FILE__ for metadata changes
inotify_rm_watch($fd, $watch_descriptor);

// Close the inotify instance
// This may have closed all watches if this was not already done
fclose($fd);

关于PHP Inotify 非阻塞方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13123409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com