Subversion Repositories php-qbpwcf

Rev

Rev 66 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 66 Rev 226
Line 1... Line 1...
1
#!/usr/bin/php
1
#!/usr/bin/php
2
<?php
2
<?php
3
 
3
 
4
/*
4
/*
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
6
    Copyright (C) 2014~2025 Min-Jhin,Chen
6
    Copyright (C) 2014~2025 MIN ZHI, CHEN
7
 
7
 
8
    This file is part of QBPWCF.
8
    This file is part of QBPWCF.
9
 
9
 
10
    QBPWCF is free software: you can redistribute it and/or modify
10
    QBPWCF is free software: you can redistribute it and/or modify
11
    it under the terms of the GNU General Public License as published by
11
    it under the terms of the GNU General Public License as published by
Line 17... Line 17...
17
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
    GNU General Public License for more details.
18
    GNU General Public License for more details.
19
 
19
 
20
    You should have received a copy of the GNU General Public License
20
    You should have received a copy of the GNU General Public License
21
    along with QBPWCF.  If not, see <http://www.gnu.org/licenses/>.
21
    along with QBPWCF.  If not, see <http://www.gnu.org/licenses/>.
22
    
22
 
23
*/
23
*/
24
 
24
 
25
/*
25
/*
26
說明:
26
說明:
27
一次檢查多個節點是否存在,存在的node清單會以jsone格式印出.
27
一次檢查多個節點是否存在,存在的node清單會以jsone格式印出.
Line 69... Line 69...
69
	#結束執行,回傳shell 1.
69
	#結束執行,回傳shell 1.
70
	exit(1);
70
	exit(1);
71
 
71
 
72
	}#if end
72
	}#if end
73
 
73
 
74
#設置 include path 
74
#設置 include path
75
set_include_path($output[0].PATH_SEPARATOR.get_include_path());
75
set_include_path($output[0].PATH_SEPARATOR.get_include_path());
76
 
76
 
77
#匯入外部套件
77
#匯入外部套件
78
include("allInOne.php");
78
include("allInOne.php");
79
 
79
 
80
#說明函式
80
#說明函式
81
function help(){
81
function help(){
82
 
82
 
83
	#印出指令說明
83
	#印出指令說明
84
	echo "Usage of ".basename(__FILE__).":".PHP_EOL; 
84
	echo "Usage of ".basename(__FILE__).":".PHP_EOL;
85
	echo "--node [path/node] 代表要確認位於 path 底下的 node 是否存在".PHP_EOL;
85
	echo "--node [path/node] 代表要確認位於 path 底下的 node 是否存在".PHP_EOL;
86
	
86
 
87
	#結束執行
87
	#結束執行
88
	exit;
88
	exit;
89
 
89
 
90
	}#function help end
90
	}#function help end
91
 
91
 
Line 113... Line 113...
113
#如果解析參數失敗
113
#如果解析參數失敗
114
if($parseArgu["status"]==="false"){
114
if($parseArgu["status"]==="false"){
115
 
115
 
116
	#印出結果
116
	#印出結果
117
	var_dump($parseArgu);
117
	var_dump($parseArgu);
118
	
118
 
119
	#結束執行,回傳shell 1,代表異常.
119
	#結束執行,回傳shell 1,代表異常.
120
	exit(1);
120
	exit(1);
121
	
121
 
122
	}#if end
122
	}#if end
123
	
123
 
124
#檢查參數
124
#檢查參數
125
#函式說明:
125
#函式說明:
126
#檢查必填與可省略參數,可省略參數可指定預設要給與什麼數值內容。
126
#檢查必填與可省略參數,可省略參數可指定預設要給與什麼數值內容。
127
#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
127
#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
128
#$reuslt["error"],執行不正常結束的錯訊息陣列.
128
#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 175... Line 175...
175
#若執行失敗
175
#若執行失敗
176
if($checkArguments["status"]==="false"){
176
if($checkArguments["status"]==="false"){
177
 
177
 
178
	#印出結果
178
	#印出結果
179
	var_dump($checkArguments);
179
	var_dump($checkArguments);
180
	
180
 
181
	#結束執行,回傳shell 1,代表異常.
181
	#結束執行,回傳shell 1,代表異常.
182
	exit(1);
182
	exit(1);
183
 
183
 
184
	}#if end
184
	}#if end
185
 
185
 
186
#若檢查不通過
186
#若檢查不通過
187
if($checkArguments["passed"]==="false"){
187
if($checkArguments["passed"]==="false"){
188
 
188
 
189
	#印出結果
189
	#印出結果
190
	#var_dump($checkArguments);
190
	#var_dump($checkArguments);
191
	
191
 
192
	#提示用法
192
	#提示用法
193
	help();
193
	help();
194
	
194
 
195
	#結束執行
195
	#結束執行
196
	exit;
196
	exit;
197
 
197
 
198
	}#if end
198
	}#if end
199
 
199
 
200
#初始化儲存運行的 proc資訊 
200
#初始化儲存運行的 proc資訊
201
$procs=array();
201
$procs=array();
202
	
202
 
203
#針對每個 node 參數
203
#針對每個 node 參數
204
foreach($parseArgu["content"]["node"] as $node){
204
foreach($parseArgu["content"]["node"] as $node){
205
 
205
 
206
	#函式說明:
206
	#函式說明:
207
	#用shell檢查檔案是否存在,可以指定查詢時用的身份.
207
	#用shell檢查檔案是否存在,可以指定查詢時用的身份.
Line 234... Line 234...
234
	#若執行失敗
234
	#若執行失敗
235
	if($checkFileExist["status"]==="false"){
235
	if($checkFileExist["status"]==="false"){
236
 
236
 
237
		#印出結果
237
		#印出結果
238
		var_dump($checkFileExist);
238
		var_dump($checkFileExist);
239
		
239
 
240
		#結束執行,回傳shell 1,代表異常.
240
		#結束執行,回傳shell 1,代表異常.
241
		exit(1);
241
		exit(1);
242
 
242
 
243
		}#if end
243
		}#if end
244
 
244
 
Line 270... Line 270...
270
	$proc=threads::proc($conf["threads::proc"]);
270
	$proc=threads::proc($conf["threads::proc"]);
271
	unset($conf["threads::proc"]);
271
	unset($conf["threads::proc"]);
272
 
272
 
273
	#如果異常
273
	#如果異常
274
	if($proc["status"]==="false"){
274
	if($proc["status"]==="false"){
275
	
275
 
276
		#印出結果
276
		#印出結果
277
		var_dump($proc);
277
		var_dump($proc);
278
		
278
 
279
		#結束執行,回傳shell 1,代表異常.
279
		#結束執行,回傳shell 1,代表異常.
280
		exit(1);
280
		exit(1);
281
	
281
 
282
		}#if end
282
		}#if end
283
 
283
 
284
	#儲存執行的proc資訊
284
	#儲存執行的proc資訊
285
	$procs[]=$proc;
285
	$procs[]=$proc;
286
	
286
 
287
	#記錄查詢的node資訊
287
	#記錄查詢的node資訊
288
	$nodes2check[]=$node;
288
	$nodes2check[]=$node;
289
 
289
 
290
	}#if end
290
	}#if end
291
 
291
 
Line 301... Line 301...
301
#初始化記錄沒有找到的node清單
301
#初始化記錄沒有找到的node清單
302
$not_found_node=array();
302
$not_found_node=array();
303
 
303
 
304
#無窮迴圈
304
#無窮迴圈
305
while(true){
305
while(true){
306
	
306
 
307
	#針對每個 proc 資訊
307
	#針對每個 proc 資訊
308
	foreach($procs as $pIndex => $proc){
308
	foreach($procs as $pIndex => $proc){
309
	
309
 
310
		#函式說明:
310
		#函式說明:
311
		#更新透過proc執行的多程序資訊.
311
		#更新透過proc執行的多程序資訊.
312
		#回傳結果:
312
		#回傳結果:
313
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
313
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
314
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
314
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 324... Line 324...
324
		#無.
324
		#無.
325
		#備註:
325
		#備註:
326
		#無.
326
		#無.
327
		$proc_update=threads::proc_update($conf["threads::proc_update"]);
327
		$proc_update=threads::proc_update($conf["threads::proc_update"]);
328
		unset($conf["threads::proc_update"]);
328
		unset($conf["threads::proc_update"]);
329
	
329
 
330
		#如果異常
330
		#如果異常
331
		if($proc_update["status"]==="false"){
331
		if($proc_update["status"]==="false"){
332
		
332
 
333
			#印出結果
333
			#印出結果
334
			var_dump($proc_update);
334
			var_dump($proc_update);
335
			
335
 
336
			#結束執行,回傳shell 1,代表異常.
336
			#結束執行,回傳shell 1,代表異常.
337
			exit(1);
337
			exit(1);
338
		
338
 
339
			}#if end
339
			}#if end
340
		
340
 
341
		#更新第一個程序的proc資訊
341
		#更新第一個程序的proc資訊
342
		$procs[$pIndex]["content"]=$proc_update["content"];
342
		$procs[$pIndex]["content"]=$proc_update["content"];
343
		
343
 
344
		#給予別名
344
		#給予別名
345
		$pInfo=&$procs[$pIndex]["content"][0];
345
		$pInfo=&$procs[$pIndex]["content"][0];
346
		
346
 
347
		#如果已經執行結束
347
		#如果已經執行結束
348
		if($pInfo["statusCode"]!=="?"){
348
		if($pInfo["statusCode"]!=="?"){
349
		
349
 
350
			#若程序執行異常
350
			#若程序執行異常
351
			if($pInfo["statusCode"]!==0){
351
			if($pInfo["statusCode"]!==0){
352
			
352
 
353
				#記錄之
353
				#記錄之
354
				$error_procs[]=$pInfo;
354
				$error_procs[]=$pInfo;
355
				
355
 
356
				#移除其資訊
356
				#移除其資訊
357
				unset($procs[$pIndex]);
357
				unset($procs[$pIndex]);
358
				
358
 
359
				#換下個proc程序
359
				#換下個proc程序
360
				continue;
360
				continue;
361
			
361
 
362
				}#if end
362
				}#if end
363
		
363
 
364
			#記錄之
364
			#記錄之
365
			$success_procs[]=$pInfo;
365
			$success_procs[]=$pInfo;
366
			
366
 
367
			#移除其資訊
367
			#移除其資訊
368
			unset($procs[$pIndex]);
368
			unset($procs[$pIndex]);
369
			
369
 
370
			#取得輸出的結果
370
			#取得輸出的結果
371
			$stdOut=trim($pInfo["content"]);
371
			$stdOut=trim($pInfo["content"]);
372
		
372
 
373
			#如果有找到
373
			#如果有找到
374
			if($stdOut==="found"){
374
			if($stdOut==="found"){
375
			
375
 
376
				#記錄找到的 node
376
				#記錄找到的 node
377
				$found_node[]=$nodes2check[$pIndex];
377
				$found_node[]=$nodes2check[$pIndex];
378
				
378
 
379
				}#if end
379
				}#if end
380
		
380
 
381
			#反之若沒有找到
381
			#反之若沒有找到
382
			else if($stdOut==="not found"){
382
			else if($stdOut==="not found"){
383
			
383
 
384
				#記錄沒找到的 node
384
				#記錄沒找到的 node
385
				$not_found_node[]=$nodes2check[$pIndex];
385
				$not_found_node[]=$nodes2check[$pIndex];
386
			
386
 
387
				}#if end
387
				}#if end
388
		
388
 
389
			#換下個proc程序
389
			#換下個proc程序
390
			continue;
390
			continue;
391
		
391
 
392
			}#if end
392
			}#if end
393
			
393
 
394
		#執行到這邊,代表程序尚未結束.
394
		#執行到這邊,代表程序尚未結束.
395
			
395
 
396
		#換下個proc程序
396
		#換下個proc程序
397
		continue;
397
		continue;
398
	
398
 
399
		}#foreach end
399
		}#foreach end
400
 
400
 
401
	#如果已經執行完所有的 proc 程序
401
	#如果已經執行完所有的 proc 程序
402
	if(empty($procs)){
402
	if(empty($procs)){
403
	
403
 
404
		#結束執行
404
		#結束執行
405
		break;
405
		break;
406
	
406
 
407
		}#if end
407
		}#if end
408
 
408
 
409
	#休息0.1秒
409
	#休息0.1秒
410
	usleep(100000);
410
	usleep(100000);
411
 
411
 
412
	}#while end
412
	}#while end
413
	
413
 
414
#印出 json 結果
414
#印出 json 結果
415
echo json_encode($found_node);
-
 
416
415
echo json_encode($found_node);
-
 
416