Project

General

Profile

Feature #403 » monitor-poll.php

znerol znerol, 03/06/2010 05:22 AM

 
1
<?php
2

    
3
class watchpath {
4
	function __construct($path, $interval) {
5
		$this->path = $path;
6
		$this->interval = $interval;
7
		$this->last = time();
8
	}
9

    
10
	function wait() {
11
		while(true) {
12
			sleep($this->interval);
13

    
14
			clearstatcache();
15
			if (FALSE == ($stat = stat($this->path))) {
16
				continue;
17
			}
18

    
19
			$ctime = $stat[10];
20

    
21
			if ($ctime <= $this->last) {
22
				continue;
23
			}
24

    
25
			$this->last = $ctime;
26
			break;
27
		}
28
	}
29
}	
30

    
31
function printfile($path)
32
{
33
	$lines = file($path);
34
	echo("\n*** " . $path . "@" . $ctime . " ***\n");
35
	foreach ($lines as $num => $line) {
36
		echo($line);
37
	}
38
}
39

    
40

    
41
$path = "/tmp/test.txt";
42
$seconds = 1;
43

    
44
printfile($path);
45
$watchdog = new watchpath($path, $seconds);
46

    
47
while(true) {
48
	$watchdog->wait();
49
	printfile($path);
50
}
51
?>
52

    
(3-3/5)