-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVisitsPrDay.php
More file actions
47 lines (43 loc) · 1.3 KB
/
VisitsPrDay.php
File metadata and controls
47 lines (43 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
use Riak\Connection;
use Riak\MapReduce\Functions\JavascriptFunction;
use Riak\MapReduce\Input\BucketInput;
use Riak\MapReduce\MapReduce;
use Riak\MapReduce\Phase\MapPhase;
use Riak\MapReduce\Phase\ReducePhase;
$connection = new Connection('localhost');
$mrinput = new BucketInput('phpriak_log_access');
$jsmapfunc = JavascriptFunction::anon('function (v) {
var r = [];
if(!v.not_found) {
var object = Riak.mapValuesJson(v)[0];
// Extract date ignore time
var date = object["date"]["date"].split(" ")[0];
var o = {};
o[date] = 1;
r.push(o);
}
return r;
}');
$jsredfunc = JavascriptFunction::anon('function (values) {
var result = {};
if (values.length > 0) {
for (value in values) {
for(var date in values[value]) {
var count = values[value][date];
if (date in result) result[date] += count;
else result[date] = count;
}
}
}
return [result];
}');
$mr = new MapReduce($connection);
$mr ->addPhase(new MapPhase($jsmapfunc, false))
->addPhase(new ReducePhase($jsredfunc, false))
->setInput($mrinput);
/** @var $result \Riak\MapReduce\Output\Output[] */
$result = $mr->run();
print_r($result[0]->getValue());
/*var_dump($result[0]);
var_dump($result);*/