-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathREADME
300 lines (219 loc) · 11 KB
/
README
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
Makuosan PHP Extension は、Makuosanデーモンを操作するコマンドラインツールmsyncを置き換えるものです。Makuosanはマルチキャストを利用して複数のサーバへ同時にファイルを転送するソフトウェアです。rsyncと違い、転送先の台数が増加しても転送時間は増加しないという利点があります。下の図はMakuosanを利用してHost AからHost B, Host C, Host Dに向けてファイルを送信するときの模式図です。msyncからHost Aで動作するMakuosanデーモンに向けてsend commandを送信すると、Host B, Host C, Host DのMakuosanデーモンに向けてファイルが転送されます。
---------
| msync |
--------- ---------------------
| +--->| Makuosan (Host B) |
| send command | ---------------------
v |
--------------------- | ---------------------
| Makuosan (Host A) |----+--->| Makuosan (Host C) |
--------------------- | ---------------------
|
| ---------------------
+--->| Makuosan (Host D) |
---------------------
これまでMakuosanデーモンを操作するためにはmsyncを使用する必要がありました。Makuosan PHP Extensionを使用すると、下の図のようにPHPプログラムから直接Makuosanデーモンを操作出来るようになります。
-------------------------------------
| PHP Program (Makuo PHP Extension) |
-------------------------------------
| ---------------------
| +--->| Makuosan (Host B) |
| send command | ---------------------
v |
--------------------- | ---------------------
| Makuosan (Host A) |----+--->| Makuosan (Host C) |
--------------------- | ---------------------
|
| ---------------------
+--->| Makuosan (Host D) |
---------------------
Makuosan PHP Extensionには、msyncを利用するのと比較して以下の利点があります。
・ PHPで書かれたWebアプリケーションからMakuosanをよりシームレスに利用できる
・ Makuosanデーモンが返す情報にPHPプログラムから簡単にアクセスできる
・ Makuosanデーモンをより細かく制御できる
Makuosan,msyncに関する詳しい情報は以下のベージを参照して下さい。
http://lab.klab.org/wiki/Makuosan
以下ではMakuosanクラスについて説明します。
________________________________________________________________________________
void Makuosan::__construct(array options)
- 説明
Makuoオブジェクトを作成する。
- パラメータ
- options
オプションを指定するキー=>値の配列。以下のキーを受け付ける。
- "rcv_timeout" => int
makuosanデーモンとの間でデータを送受信する各メソッドの実行時間の制限を指定する
(単位は秒)。指定がなければ30となる。
- 返り値
Makuoオブジェクトを返す。
- 例
$makuo = new Makuosan(array('rcv_timeout' => 5)); // rcv_timeoutは5秒。
$makuo = new Makuosan(); // 指定しなければrcv_timeoutは30秒となる。
void Makuosan::__destruct()
- 説明
MakuoオブジェクトがGCに回収される際に呼ばれる。もし内部に閉じていない接続があれば、その
接続を閉じる。
- パラメータ
このメソッドにはパラメータは無い。
- 返り値
このメソッドには返り値は無い。
bool Makuosan::connect_tcp([string host, int port, int timeout])
- 説明
TCPソケットでmakuosanデーモンと接続する。
- パラメータ
- host
接続先のホスト名を指定する。指定がなければ"127.0.0.1"となる。
- port
接続先のポート番号を指定する。指定がなければ5000となる。
- timeout
接続のタイムアウトを指定する(単位は秒)。指定がなければ1となる。
- 返り値
成功した場合はTRUEを、失敗した場合はFALSEを返す。
- 例
$makuo = new Makuosan();
if (!$makuo->connect_tcp("127.0.0.1", 5000, 5)) {
// 失敗
echo "connection failed.\n";
echo "ErrorMessage: " . $makuo->error . "\n";
}
bool Makuosan::connect_unix(string path [, int timeout])
- 説明
UNIXドメインソケットでmakuosanデーモンと接続する。
- パラメータ
- path
接続先のUNIXドメインソケットのパスを指定する。
- timeout
接続のタイムアウトを指定する(単位は秒)。指定がなければ1となる。
- 返り値
成功した場合はTRUEを、失敗した場合はFALSEを返す。
- 例
$makuo = new Makuosan();
if (!$makuo->connect_unix("/home/kishimoto-k/makuosan.sock")) {
// 失敗
echo "connection failed.\n";
echo "ErrorMessage: " . $makuo->error . "\n";
}
void Makuosan::close()
- 説明
makuosanデーモンとの接続を閉じる。
- パラメータ
このメソッドにはパラーメータは無い。
- 返り値
このメソッドには返り値は無い。
- 例
$makuo = new Makuosan();
$makuo->connect_tcp("127.0.0.1", 5000, 5);
$makuo->close();
bool Makuosan::send(string path [, array options])
- 説明
msync [-n] [-r] [-t host] [path] と同等の処理を行う。指定されたファイル、または全てのファイルを他のサーバに送信し同期する。
- パラメータ
- path
送信するファイルのパスを指定する。
- options
オプションを指定するキー=>値の配列。以下のキーを受け付ける。
- "recursive" => bool
-rオプションに相当する。trueが指定された場合、MAKUOSANデーモン起動時に指定したベースディレクトリ以下の全てのファイルを送信する。指定されなければfalseとなる。
- "dryrun" => bool
trueが指定された場合実際にファイルは送信しない。指定されなければfalseとなる。
- "target_host" => string
送信先のホストを指定する。指定された場合はそのホストに対してのみファイルを送信する。指定されなければ全てのホストにファイルを送信する。
- "delete" => bool
trueが指定された場合ローカルに存在しないファイルを他のサーバから削除する。falseが指定された場合はファイル送信のみ行われ、削除はされない。指定されなければfalseとなる。
- 返り値
成功した場合はTRUEを、失敗した場合はFALSEを返す。
bool Makuosan::sync(string path [, array options])
- 説明
msync --sync [-n] [-r] [-t host] [path] と同等の処理を行う。sendとほぼ同じだが、ローカルに存在しないファイルのpathを指定した時の動作が異なる。sendではエラーになるが、syncでは他のサーバにあるファイルを消す事で同期をはかる。sendメソッドのoptions引数でarray("delete"=>true)を指定するよりも高速にファイルの削除を行う事ができる。
- パラメータ
Makuosan::sendメソッドと同じである。
- 返り値
成功した場合はTRUEを、失敗した場合はFALSEを返す。
mixed Makuosan::status()
- 説明
msync --status と同等の動作を行う。接続しているmakuosanデーモンの情報を取得する。
- パラメータ
このメソッドにパラメータは無い。
- 返り値
成功した場合は結果をハッシュテーブルに入れて返す。失敗した場合はFALSEを返す。
- 例
$makuo = new Makuosan();
$makuo->connect_tcp("127.0.0.1", 5000);
print_r($makuo->status());
出力結果
_________________________________________________________________
Array
(
[process] => 6415
[version] => 1.2.1
[basedir] => /Users/keisuke/klab/php-module/makuo-base/
[mfalloc] => 2
[command] => 0
[send op] => 0
[recv op] => 0
)
_________________________________________________________________
mixed Makuosan::members()
- 説明
msync --members と同等の動作を行う。他のホストで動作しているMAKUOSANデーモンを列挙する。
- パラメータ
このメソッドにパラメータは無い。
- 返り値
成功した場合は結果を配列に入れて返す。失敗した場合はFALSEを返す。
- 例
$makuo = new Makuosan();
$makuo->connect_tcp("127.0.0.1", 5000);
print_r($makuo->members());
出力結果
_________________________________________________________________
Array
(
[0] => 10.10.2.26
[1] => 10.10.2.27
)
_________________________________________________________________
mixed Makuosan::check()
- 説明
msync --check -r と同様の動作を行う。ローカルにはあるが他のホストに無いファイルを列挙する。
- パラメータ
このメソッドにパラメータは無い。
- 返り値
成功した場合は結果を配列に入れて返す。失敗した場合はFALSEを返す。
bool Makuosan::exclude_add(array paths)
- 説明
excludeリストにpathsの各要素を追加する。excludeリストで指定されているファイルはsendの際に無視される。
- パラメータ
- paths
文字列を要素とする配列。excludeリストに追加したいパスを各要素で指定する。
- 返り値
成功した場合はTRUEを、失敗した場合はFALSEを返す。
bool Makuosan::exclude_del(string path)
- 説明
excludeリストからpathと一致する物を削除する。
- パラメータ
- path
excludeリストから削除したいパスを指定する。
- 返り値
成功した場合はTRUEを、失敗した場合はFALSEを返す。
mixed Makuosan::exclude_list()
- 説明
excludeリストを取得する。
- 返り値
成功した場合は結果を配列に入れて返す。失敗した場合はFALSEを返す。
bool Makuosan::exclude_clear()
- 説明
excludeリストを空にする。
- 返り値
成功した場合はTRUEを、失敗した場合はFALSEを返す。
string Makuosan::error
- 説明
直近のエラー内容を文字列で返す。
- 例
$makuo = new Makuosan();
if (!$makuo->connect_tcp("127.0.0.1", 5000) {
echo $makuo->error;
}
出力結果
_________________________________________________________________
Connection failed
_________________________________________________________________