Subversion Repositories php-qbpwcf

Rev

Rev 1 | Rev 223 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 liveuser 1
<?php
2
 
3
/*
4
 
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
6
    Copyright (C) 2014~2025 Min-Jhin,Chen
7
 
8
    This file is part of QBPWCF.
9
 
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
12
    the Free Software Foundation, either version 3 of the License, or
13
    (at your option) any later version.
14
 
15
    QBPWCF is distributed in the hope that it will be useful,
16
    but WITHOUT ANY WARRANTY; without even the implied warranty of
17
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
    GNU General Public License for more details.
19
 
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/>.
22
 
23
*/
24
 
25
/*
26
 
27
說明:
28
請先於 sample 資料夾運行 sock::unixDomainSockServer.php 20250228 再運行 threads::socket.php 20250228
29
 
30
*/
31
 
32
#使用命名空間qbpwcf
33
namespace qbpwcf;
34
 
35
#assets dir
36
$assetsDir="assets of threads::socket_20250228";
37
 
38
#函式說明:
39
#透過 unix socket 來多執行序運作.
40
#回傳結果:
41
#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
42
#$reuslt["error"],執行不正常結束的錯訊息陣列.
43
#$result["function"],當前執行的函式名稱.
44
#$result["argu"],使用的參數.
45
#$result["content"],陣列,每個元素為cmds參數中個別元素其指令執行後得到的輸出.
46
#必填參數:
47
#$conf["cmds"],字串陣列,每個元素代表要執行的指令與參數.
48
$conf["cmds"]=array("ps auxwf '|' cat");
49
#可省略參數:
50
#可省略參數:
51
#$conf["sock"],字串,要連線的 usr/bin/qbpwcf-sock.php 所產生的 unix domain socket 路徑與名稱,預設為 qbpwcf_usock_path.
52
$conf["sock"]=$assetsDir."/unixDomainSockServer.sock";
53
#參考資料:
54
#無
55
#備註:
56
#需要透過sock::unixDomainSockServer來運行.
57
$socket=threads::socket($conf);
58
unset($conf);
59
 
60
#debug
61
if($socket["status"]==="false"){
62
 
63
	#debug
64
	var_dump($socket);
65
 
66
	#結束執行回傳 1 給 shell
67
	exit(1);
68
 
69
	}#if end
70
 
71
#如果沒有要的結果
72
if(!isset($socket["content"])){
73
 
74
	#debug
75
	var_dump($socket);
76
 
77
	#結束執行回傳 1 給 shell
78
	exit(1);
79
 
80
	}#if end
81
 
82
#如果執行指令失敗
83
if($socket["content"][0]["status"]==="false"){
84
 
85
	#debug
86
	var_dump($socket);
87
 
88
	#結束執行回傳 1 給 shell
89
	exit(1);
90
 
91
	}#if end
92
 
93
#取得程序的 uuid
94
$procUuid=$socket["content"][0]["content"];
95
 
96
#無窮迴圈
97
while(true){
98
 
99
	#函式說明:
100
	#詢問透過 sock::unixDomainSockServer 執行的程序狀況
101
	#回傳結果:
102
	#$result["status"],"true"代表執行正常;"false"代表執行不正常.
103
	#$result["error"],錯誤訊息陣列.
104
	#$result["function"],當前執行的函式名稱.
105
	#$result["argu"],使用的參數.
106
	#$result["content"],陣列,程序的資訊.
107
	#$result["content"]["pid"],字串,程序的pid.
108
	#$result["content"]["running"],字串,是否正常執行中.
109
	#$result["content"]["statusCode"],字串,回傳給 shell 的代碼.
110
	#$result["content"]["input"],字串,輸入的內容.
111
	#$result["content"]["output"],字串,標準輸出的內容.
112
	#$result["content"]["error"],字串,錯誤輸出的內容.
113
	#必填參數:
114
	#$conf["uuid"],字串,proc的uuid.
115
	$conf["uuid"]=$procUuid;
116
	#可省略參數:
117
	#$conf["sock"],字串,要連線的 usr/bin/qbpwcf-sock.php(sock::unixDomainSockServer) 所產生的 unix domain socket 路徑與名稱,預設為 qbpwcf_usock_path.
118
	$conf["sock"]=$assetsDir."/unixDomainSockServer.sock";
119
	#參考資料:
120
	#無.
121
	#備註:
122
	#無.
123
	$getProcInfo=sock::getProcInfo($conf);
124
	unset($conf);
125
 
126
	#debug
127
	if($getProcInfo["status"]==="false"){
128
 
129
		#debug
130
		var_dump($getProcInfo);
131
 
132
		#結束執行回傳 1 給 shell
133
		exit(1);
134
 
135
		}#if end
136
 
137
	#如果已經停止運行
138
	if($getProcInfo["content"]["running"]==="false"){
139
 
140
		#debug
141
		var_dump($getProcInfo);
142
 
143
		#結束執行
144
		break;
145
 
146
		}#if end
147
 
148
	#休息1秒
149
	sleep(1);
150
 
151
	}#whlie end
152