Subversion Repositories php-qbpwcf

Rev

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

Rev 38 Rev 130
Line 77... Line 77...
77
 
77
 
78
#匯入外部套件
78
#匯入外部套件
79
include("allInOne.php");
79
include("allInOne.php");
80
 
80
 
81
#說明函式
81
#說明函式
82
function help()
82
function help(){
83
{
83
 
84
	#印出指令說明
84
	#印出指令說明
85
	echo "Usage of ".basename(__FILE__).":".PHP_EOL; 
85
	echo "Usage of ".basename(__FILE__).":".PHP_EOL; 
86
	echo "--cmd [command to run] 代表要執行的指令,若有多個則會按照順序執行.".PHP_EOL;
86
	echo "--cmd [command to run] 代表要執行的指令,若有多個則會按照順序執行.".PHP_EOL;
87
	echo "--name [service name] 服務的名稱".PHP_EOL;
87
	echo "--name [servie name] 服務的名稱".PHP_EOL;
88
	echo "--runOnBoot [yes/no] 開機好就要啟動該服務,預設為yes".PHP_EOL;
88
	echo "--runOnBoot [yes/no] 開機好就要啟動該服務,預設為yes.".PHP_EOL;
89
	echo "--runNow [yes/no] 馬上運行服務,預設為yes".PHP_EOL;
89
	echo "--runNow [yes/no] 馬上運行服務,預設為yes.".PHP_EOL;
90
	
-
 
-
 
90
	echo "--keepServiceUp [yes/no] 是否要加增確保該服務在線的設定,預設為no.".PHP_EOL;
-
 
91
	echo "--interval [秒數] 要多少時間就檢查一次服務是否在線.".PHP_EOL;
-
 
92
	echo "--checkListenIp [ipv4/ipv6]:[port]/[tcp/udp] 要檢查哪個ip位置的port與protocol有被使用,才代表服務有在線.".PHP_EOL;
-
 
93
	echo "\tip可用*代表所有網路界面取得的ip.".PHP_EOL;
-
 
94
	echo "--checkListenAddr [path to socket] 要檢查哪個路徑的unix domain socket有被使用,才代表服務有在線".PHP_EOL;
91
	#結束執行
95
	#結束執行
92
	exit;
96
	exit;
93
}
97
 
-
 
98
	}#function help end
94
 
99
 
95
#函式說明:
100
#函式說明:
96
#解析參數.
101
#解析參數.
97
#回傳結果:
102
#回傳結果:
98
#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
103
#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 164... Line 169...
164
#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
169
#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
165
#$conf["canBeEmpty"]=array();
170
#$conf["canBeEmpty"]=array();
166
#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
171
#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
167
#$conf["skipableVariableCanNotBeEmpty"]=array("backTime");
172
#$conf["skipableVariableCanNotBeEmpty"]=array("backTime");
168
#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
173
#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
169
$conf["skipableVariableName"]=array("runOnBoot","runNow");
174
$conf["skipableVariableName"]=array("runOnBoot","runNow","keepServiceUp","interval","checkListenIp","checkListenAddr");
170
#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
175
#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
171
$conf["skipableVariableType"]=array("array","array");
176
$conf["skipableVariableType"]=array("array","array","array","array","array");
172
#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
177
#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
173
$conf["skipableVarDefaultValue"]=array(array("yes"),array("yes"));
178
$conf["skipableVarDefaultValue"]=array(array("yes"),array("yes"),null,null,null,null);
174
#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
179
#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
175
#$conf["variableCheck::checkArguments"]["disallowAllSkipableVarIsEmpty"]="false";
180
#$conf["variableCheck::checkArguments"]["disallowAllSkipableVarIsEmpty"]="false";
176
#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
181
#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
177
#$conf["disallowAllSkipableVarIsEmptyArray"]="";
182
#$conf["disallowAllSkipableVarIsEmptyArray"]="";
178
#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
183
#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
Line 236... Line 241...
236
#如果是 yes
241
#如果是 yes
237
if($runNow==="yes"){
242
if($runNow==="yes"){
238
 
243
 
239
	#轉換為 "true"
244
	#轉換為 "true"
240
	$runNow="true";
245
	$runNow="true";
-
 
246
	
-
 
247
	}#if end
-
 
248
 
-
 
249
#如果有指定 keepServiceUp
-
 
250
if(isset($parseArgu["content"]["keepServiceUp"][0])){
-
 
251
 
-
 
252
	#設定keepServiceUp
-
 
253
	$keepServiceUp=$parseArgu["content"]["keepServiceUp"][0];
-
 
254
 
-
 
255
	}#if end
-
 
256
 
-
 
257
#如果有指定 interval
-
 
258
if(isset($parseArgu["content"]["interval"][0])){
-
 
259
 
-
 
260
	#設定interval
-
 
261
	$interval=$parseArgu["content"]["interval"][0];
-
 
262
 
-
 
263
	}#if end
-
 
264
	
-
 
265
#初始化要檢查的服務名稱
-
 
266
$checkListen=array("name"=>$conf["name"]);
-
 
267
	
-
 
268
#如果有指定 checkListenIp
-
 
269
if(isset($parseArgu["content"]["checkListenIp"])){
-
 
270
 
-
 
271
	#針對每個 checkListenIp
-
 
272
	foreach($parseArgu["content"]["checkListenIp"] as $checkListenIp){
-
 
273
	
-
 
274
		#記錄要檢查的ip & port & protocol
-
 
275
		$checkListen[]=array("ip"=>$checkListenIp);
-
 
276
	
-
 
277
		}#foreach end
-
 
278
	
-
 
279
	}#if end
-
 
280
	
-
 
281
#如果有指定 checkListenAddr
-
 
282
if(isset($parseArgu["content"]["checkListenAddr"])){
-
 
283
 
-
 
284
	#針對每個 checkListenAddr
-
 
285
	foreach($parseArgu["content"]["checkListenAddr"] as $checkListenAddr){
-
 
286
	
-
 
287
		#記錄要檢查的 unix domain socket 路徑
-
 
288
		$checkListen[]=array("addr"=>$checkListenAddr);
-
 
289
	
-
 
290
		}#foreach end
241
 
291
 
242
	}#if end
292
	}#if end
243
 
293
 
244
#建立暫存檔案
294
#建立暫存檔案
245
#函式說明:
295
#函式說明:
Line 364... Line 414...
364
#$conf["params"]=array("");
414
#$conf["params"]=array("");
365
#$conf["enable"],字串,預設為"true",代表該服務為enable.
415
#$conf["enable"],字串,預設為"true",代表該服務為enable.
366
$conf["enable"]=$runOnBoot;
416
$conf["enable"]=$runOnBoot;
367
#$conf["startNow"],字串,預設為"true",代表該服務要立刻執行.
417
#$conf["startNow"],字串,預設為"true",代表該服務要立刻執行.
368
$conf["startNow"]=$runNow;
418
$conf["startNow"]=$runNow;
-
 
419
 
-
 
420
#如果存在 $keepServiceUp
-
 
421
if(isset($keepServiceUp)){
-
 
422
 
-
 
423
	#$conf["keepServiceUp"],字串,是否要另外增加確保服務有保持啟動的服務,預設為"false"代表否;反之為"true"代表是.
-
 
424
	$conf["keepServiceUp"]=$keepServiceUp;
-
 
425
 
-
 
426
	}#if end
-
 
427
 
-
 
428
#如果存在 $checkListen
-
 
429
if(isset($checkListen)){
-
 
430
 
-
 
431
	#$conf["cmd::keepServiceUp"]["checkListen"],陣列,用來判斷服務是否有正確啟動的條件,一個元素代表,其中要有一個socket info符合之,若元素的key為"ip",則其數值為[ipv4/ipv6]:port:protocol(tcp/udp);若元素的key為"addr",則其數值為unix domain socket 的位置與名稱;若元素的key為"name",則其數值為程序名稱.
-
 
432
	$conf["cmd::keepServiceUp"]["checkListen"]=array(array("ip"=>169.254.1.1:443/tcp,"addr"=>/usr/lib/qbpwcf/qbpwcf-usock.sock,"name"=>"addr"),"name"=>"httpd");
-
 
433
 
-
 
434
	}#if end
-
 
435
	
-
 
436
#如果存在 $interval
-
 
437
if(isset($interval)){
-
 
438
 
-
 
439
	#$conf["cmd::keepServiceUp"]["interval"],字串,檢查沒問題後,要多少秒後再檢查一次,預設為30秒,亦即"30".
-
 
440
	$conf["cmd::keepServiceUp"]["interval"]=$interval;
-
 
441
 
-
 
442
	}#if end
-
 
443
 
369
#參考資料:
444
#參考資料:
370
#無.
445
#無.
371
#備註:
446
#備註:
372
#無.
447
#無.
373
$registerService=cmd::registerService($conf);
448
$registerService=cmd::registerService($conf);