use warnings;
no warnings qw(once);
-open my $fh, "-|", "varnishncsa -F '%{%s}t %U %q tffb=%{Varnish:time_firstbyte}x' -q 'ReqURL ~ \"^/analysis.pl\"'"
+my $url = $ARGV[0] // "/analysis.pl"; # Technically an URL regex, not an URL.
+my $port = $ARGV[1] // 5000;
+
+open my $fh, "-|", "varnishncsa -F '%{%s}t %U %q tffb=%{Varnish:time_firstbyte}x' -q 'ReqURL ~ \"^$url\"'"
or die "varnishncsa: $!";
my %uniques = ();
-my $ev = AnyEvent->io(
+my $ev = AnyEvent::Handle->new(
fh => $fh,
- poll => 'r',
- cb => sub {
- chomp (my $input = <$fh>);
- handle_line($input);
- }
+ on_read => sub {
+ my ($hdl) = @_;
+ $hdl->push_read(
+ line => sub {
+ my ($hdl, $line, $eof) = @_;
+ handle_line($line);
+ }
+ );
+ },
);
my $ev2 = AnyEvent->timer(
interval => 1.0,
sub handle_line {
my $line = shift;
- $line =~ m#(\d+) /analysis.pl \?ims=\d+&unique=(.*) tffb=(.*)# or return;
+ $line =~ m#(\d+) $url \?ims=\d+&unique=(.*) tffb=(.*)# or return;
$uniques{$2} = {
last_seen => $1 + $3,
grace => undef,
my $num_viewers = scalar keys %uniques;
printf "%d entries in hash, mtime=$mtime\n", scalar keys %uniques;
- LWP::Simple::get('http://127.0.0.1:5000/override-num-viewers?num=' . $num_viewers);
+ LWP::Simple::get('http://127.0.0.1:' . $port . '/override-num-viewers?num=' . $num_viewers);
}