0

我在 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);

?>
4

2 回答 2

0

Java 7 支持类似 inotify 的文件通知。请参阅此处获取教程。

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

于 2012-10-24T02:26:05.160 回答
0

我不确定您所说的“java 和 php”是什么意思,但是如果您正在寻找的是一种纯 Java 方式来通知文件的更改,那么您可以使用 java.nio.file.Path 和监视服务 API。

这是 Oracle 文档中对其工作原理的解释。

于 2012-10-24T02:27:17.277 回答