如何在php中使用java来监控linux中的文件

时间:2012-10-24 01:29:48

标签: java php linux

我在linux中有程序,它在检测到新的连接套接字时创建/修改文件。它将ip记录在该文件中,并在客户端断开连接或断开连接时将其删除..

在php中我知道inotify但是它的阻塞和刷新不像java它没有..我怎么能用java和php这样做我可以监视linux中的文件并更新网站,linux中的文件已被修改?

谢谢..

例如在php ..

<?php

$fd = inotify_init();

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

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

while(true){
$events = inotify_read($fd);

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

echo $contents;
}

$read = array($fd);
$write = null;
$except = null;

stream_select($read,$write,$except,0);


stream_set_blocking($fd, 0);

inotify_read($fd); 

$queue_len = inotify_queue_len($fd);

inotify_rm_watch($fd, $watch_descriptor);


fclose($fd);

?>

2 个答案:

答案 0 :(得分:0)

Java 7支持类似inotify的文件通知。有关教程,请参阅here

也许您可以找到或编写可以在PHP中使用的C程序?

答案 1 :(得分:0)

我不确定你的意思是“java和php”,但是如果你要找的是纯java方式来通知文件的更改,那么你可以使用java.nio.file。路径和WatchService api。

Here is an explanation from the Oracle documentation它是如何运作的。