Parsing ip addresses in php

Posted by user2938780 on Stack Overflow See other posts from Stack Overflow or by user2938780
Published on 2013-10-30T19:14:49Z Indexed on 2013/10/30 21:54 UTC
Read the original article Hit count: 133

Filed under:
|

I am trying to get the number of active connections (Real Time) from a log file by IP connected and having a Play status but instead, it's giving me the total number of IP with status play. The number doesn't decrease at all. Keeps on increasing as soon as a new ip is added. How can I fix it? Here my code:

$stringToParse = file_get_contents('wowzamediaserver_access.log');
preg_match_all('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/', $stringToParse, $matchOP);
echo "Number of connections: ".sizeof(array_unique($matchOP[0]));

HERE IS THE LOG:

2013-10-30  14:54:36    CET stop    stream  INFO    200 account1    -   _defaultVHost_  account1    _definst_   149.21  streamURL   1935    fullStreamURL   IP_ADDRESS_1    http (cupertino)    -   
2013-10-30  14:56:12    CET play    stream  INFO    200 account2    -   _defaultVHost_  account1    _definst_   149.21  streamURL   1935    fullStreamURL   IP_ADDRESS_2    rtmp (cupertino)    -   
2013-10-30  14:58:23    CET stop    stream  INFO    200 account2    -   _defaultVHost_  account1    _definst_   149.21  streamURL   1935    fullStreamURL   IP_ADDRESS_2    rtmp (cupertino)    -   
2013-10-30  14:58:39    CET play    stream  INFO    200 account1    -   _defaultVHost_  account1    _definst_   149.21  streamURL   1935    fullStreamURL   IP_ADDRESS_1    http (cupertino)    -
2013-10-30  14:59:12    CET play    stream  INFO    200 account2    -   _defaultVHost_  account1    _definst_   149.21  streamURL   1935    fullStreamURL   IP_ADDRESS_2    rtmp (cupertino)    -

I want to be able to count the IP whenever it has a "PLAY" status and don't count it whenever it's "STOP"

    2013-10-30  14:59:00    CET play    stream  INFO    200 tv2vielive  -   _defaultVHost_  tv2vielive  _definst_   0.315   [any]   1935    rtmp://tv2vie.zion3cloud.com:1935/tv2vielive    78.247.255.186  rtmp    http://www.tv2vie.org/swf/flowplayer-3.2.16.swf WIN 11,7,700,202    92565864    3576    3455    1   0   0   0   tv2vielive  -   -   -   -   -   rtmp://tv2vie.zion3cloud.com:1935/tv2vielive/tv2vielive rtmp://tv2vie.zion3cloud.com:1935/tv2vielive/tv2vielive -   rtmp://tv2vie.zion3cloud.com:1935/tv2vielive    -


2013-10-30  14:59:04    CET stop    stream  INFO    200 tv2vielive  -   _defaultVHost_  tv2vielive  _definst_   4.75    [any]   1935    rtmp://tv2vie.zion3cloud.com:1935/tv2vielive    78.247.255.186  rtmp    http://www.tv2vie.org/swf/flowplayer-3.2.16.swf WIN 11,7,700,202    92565864    3576    512571  1   7222    0   503766  tv2vielive  -   -   -   -   -   rtmp://tv2vie.zion3cloud.com:1935/tv2vielive/tv2vielive rtmp://tv2vie.zion3cloud.com:1935/tv2vielive/tv2vielive -   rtmp://tv2vie.zion3cloud.com:1935/tv2vielive    -

Any solutions? I have even tried the first answer solution but getting "0" play connections.

$stringToParse = file_get_contents('wowzamediaserver_access.log');

$pattern = '~^.* play.* ( ([0-9]{1,3}+\.){3,3}[0-9]{1,3}).*$~m';
preg_match_all($pattern, $stringToParse, $matches);

echo count($matches[1]) . ' play actions';

But whenever I use my code, I am getting "Number of connections: xxxxx(actual count of IPs). My concern is that I only need the count of IPs with PLAY status. If that IP changes to STOP then it wont count.

© Stack Overflow or respective owner

Related posts about php

Related posts about parsing