-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclient.php
69 lines (54 loc) · 1.93 KB
/
client.php
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
// ディスク消費が大きいので他人のURLに振り向けてでもいいかも(Coral CDN)
// http://shingetsu.info/protocol/protocol-0.7.d1
require_once __DIR__ . '/config.php';
require_once __DIR__ . '/Shingetsu_Client.php';
function get_thread($s, $filename)
{
// var_dump($s->have($filename)); exit;
if (!$s->have($filename)) {
var_dump('not found.');
exit;
}
$data = $s->get($filename, '0-');
file_put_contents('data/' . $filename, $data);
$lines = explode("\n", $data);
$timestamp = current(explode('<>', end($lines)));
touch('data/' . $filename, $timestamp);
}
// my_serverにserverの隣接ノードをjoinさせる
function add_node($server, $my_server)
{
$s = new Shingetsu_Client($server);
$result = $s->node(); var_dump($result);
$ms = new Shingetsu_Client($my_server);
$result = $ms->join($result); var_dump($result); exit;
}
function crawl(Shingetsu_Client $s)
{
$files = $s->recent();
rsort($files);
$break_limit = 5;
foreach ($files as $file) {
echo date('Y-m-d H:i:s', $file['timestamp']) . $file['filename'] . PHP_EOL;
if ($break_limit < 1) {
return;
}
if ($s->have($file['filename'])) {
$data = $s->get($file['filename'], '0-');
file_put_contents("data/{$file['filename']}", $data);
chmod("data/{$file['filename']}", 0666);
touch("data/{$file['filename']}", $file['timestamp']);
sleep(1);
}
$break_limit -= 1;
}
}
$s = new Shingetsu_Client(SERVER_ADDRESS);
//$node = $s->node(); var_dump($node); exit;
crawl(new Shingetsu_Client($s->node()));
//$my_node = str_replace('/', '+', ':80/server.php');
//$result = $s->join($my_node); var_dump($result); exit;
//$result = $s->have('thread_6F70657261'); var_dump($result); exit;
//$result = $s->have('thread_E69CAC'); var_dump($result); exit;
//get_thread($s, 'thread_503250');