2
2
$ serv = new swoole_server ("0.0.0.0 " , 9501 );
3
3
$ serv ->addlistener ('0.0.0.0 ' , 9502 , SWOOLE_SOCK_UDP );
4
4
$ serv ->set (array (
5
- 'worker_num ' => 2 ,
6
- //'open_eof_check' => true,
7
- //'package_eof' => "\r\n",
8
- 'task_worker_num ' => 2 ,
9
- //'task_ipc_mode' => 1,
10
- 'dispatch_mode ' => 1 ,
11
- //'daemonize' => 1,
12
- //'log_file' => '/tmp/swoole.log',
13
- //'heartbeat_idle_time' => 10,
14
- //'heartbeat_check_interval' => 10,
5
+ 'worker_num ' => 2 ,
6
+ //'open_eof_check' => true,
7
+ //'package_eof' => "\r\n",
8
+ 'task_worker_num ' => 2 ,
9
+ //'task_ipc_mode' => 1,
10
+ 'dispatch_mode ' => 1 ,
11
+ //'daemonize' => 1,
12
+ //'log_file' => '/tmp/swoole.log',
13
+ //'heartbeat_idle_time' => 10,
14
+ //'heartbeat_check_interval' => 10,
15
15
));
16
16
17
17
function my_onStart (swoole_server $ serv )
18
18
{
19
- global $ argv ;
20
- swoole_set_process_name ("php {$ argv [0 ]}: master " );
21
- echo "MasterPid= {$ serv ->master_pid }|Manager_pid= {$ serv ->manager_pid }\n" ;
22
- echo "Server: start.Swoole version is [ " .SWOOLE_VERSION ."] \n" ;
23
- //$serv->addtimer(5000);
19
+ global $ argv ;
20
+ swoole_set_process_name ("php {$ argv [0 ]}: master " );
21
+ echo "MasterPid= {$ serv ->master_pid }|Manager_pid= {$ serv ->manager_pid }\n" ;
22
+ echo "Server: start.Swoole version is [ " .SWOOLE_VERSION ."] \n" ;
23
+ //$serv->addtimer(5000);
24
24
}
25
25
26
26
function my_log ($ msg )
27
27
{
28
- echo "# " .posix_getpid ()."\t" .$ msg .PHP_EOL ;
28
+ echo "# " .posix_getpid ()."\t" .$ msg .PHP_EOL ;
29
29
}
30
30
31
31
function my_onShutdown ($ serv )
32
32
{
33
- echo "Server: onShutdown \n" ;
33
+ echo "Server: onShutdown \n" ;
34
34
}
35
35
36
36
function my_onTimer ($ serv , $ interval )
37
37
{
38
- my_log ("Server:Timer Call.Interval= $ interval " );
38
+ my_log ("Server:Timer Call.Interval= $ interval " );
39
39
}
40
40
41
41
function my_onClose ($ serv , $ fd , $ from_id )
42
42
{
43
- //my_log("Client[$fd@$from_id]: fd=$fd is closed");
43
+ //my_log("Client[$fd@$from_id]: fd=$fd is closed");
44
44
}
45
45
46
46
function my_onConnect ($ serv , $ fd , $ from_id )
47
47
{
48
- //throw new Exception("hello world");
49
- //echo "Client[$fd@$from_id]: Connect.\n";
48
+ //throw new Exception("hello world");
49
+ //echo "Client[$fd@$from_id]: Connect.\n";
50
50
}
51
51
52
52
function my_onWorkerStart ($ serv , $ worker_id )
53
53
{
54
- global $ argv ;
55
- if ($ worker_id >= $ serv ->setting ['worker_num ' ]) {
56
- swoole_set_process_name ("php {$ argv [0 ]}: task_worker " );
57
- } else {
58
- swoole_set_process_name ("php {$ argv [0 ]}: worker " );
59
- }
60
- echo "WorkerStart: MasterPid= {$ serv ->master_pid }|Manager_pid= {$ serv ->manager_pid }" ;
61
- echo "|WorkerId= {$ serv ->worker_id }|WorkerPid= {$ serv ->worker_pid }\n" ;
62
-
63
- //if ($worker_id == 1)
64
- //{
65
- // $serv->addtimer(2000); //500ms
66
- // $serv->addtimer(6000); //500ms
67
- //}
54
+ global $ argv ;
55
+ if ($ worker_id >= $ serv ->setting ['worker_num ' ]) {
56
+ swoole_set_process_name ("php {$ argv [0 ]}: task_worker " );
57
+ } else {
58
+ swoole_set_process_name ("php {$ argv [0 ]}: worker " );
59
+ }
60
+ echo "WorkerStart: MasterPid= {$ serv ->master_pid }|Manager_pid= {$ serv ->manager_pid }" ;
61
+ echo "|WorkerId= {$ serv ->worker_id }|WorkerPid= {$ serv ->worker_pid }\n" ;
62
+
63
+ //if ($worker_id == 1)
64
+ //{
65
+ // $serv->addtimer(2000); //500ms
66
+ // $serv->addtimer(6000); //500ms
67
+ //}
68
68
}
69
69
70
70
function my_onWorkerStop ($ serv , $ worker_id )
71
71
{
72
- echo "WorkerStop[ $ worker_id]|pid= " .posix_getpid ().". \n" ;
72
+ echo "WorkerStop[ $ worker_id]|pid= " .posix_getpid ().". \n" ;
73
73
}
74
74
75
75
function my_onReceive (swoole_server $ serv , $ fd , $ from_id , $ data )
76
76
{
77
- my_log ("received: $ data " );
78
- $ cmd = trim ($ data );
79
- if ($ cmd == "reload " )
80
- {
81
- $ serv ->reload ($ serv );
82
- }
83
- elseif ($ cmd == "task " )
84
- {
85
- $ task_id = $ serv ->task ("hello world " );
86
- echo "Dispath AsyncTask: id= $ task_id \n" ;
87
- }
88
- elseif ($ cmd == "taskwait " )
89
- {
90
- $ result = $ serv ->taskwait ("hello world " , 2 );
91
- echo "SyncTask: result= $ result \n" ;
92
- }
93
- elseif ($ cmd == "hellotask " )
94
- {
95
- $ serv ->task ("hellotask " );
96
- }
97
- elseif ($ cmd == "close " )
98
- {
99
- $ serv ->send ($ fd , "close connection \n" );
100
- $ result = $ serv ->close ($ fd );
101
- }
102
- elseif ($ cmd == "info " )
103
- {
104
- $ info = $ serv ->connection_info ($ fd );
105
- $ serv ->send ($ fd , 'Info: ' .var_export ($ info , true ).PHP_EOL );
106
- }
107
- elseif ($ cmd == "broadcast " )
108
- {
109
- broadcast ($ serv , $ fd , "hello from $ fd \n" );
110
- }
111
- //这里故意调用一个不存在的函数
112
- elseif ($ cmd == "error " )
113
- {
114
- hello_no_exists ();
115
- }
116
- //关闭fd
117
- elseif (substr ($ cmd , 0 , 5 ) == "close " )
118
- {
119
- $ close_fd = substr ($ cmd , 6 );
120
- $ serv ->close ($ close_fd );
121
- }
122
- elseif ($ cmd == "shutdown " )
123
- {
124
- $ serv ->shutdown ();
125
- }
126
- else
127
- {
128
- $ ret = $ serv ->send ($ fd , 'Swoole: ' .$ data , $ from_id );
129
- var_dump ($ ret );
130
- //$serv->close($fd);
131
- }
132
- //echo "Client:Data. fd=$fd|from_id=$from_id|data=$data";
133
- //$serv->deltimer(800);
134
- //swoole_server_send($serv, $other_fd, "Server: $data", $other_from_id);
77
+ my_log ("received: $ data " );
78
+ $ cmd = trim ($ data );
79
+ if ($ cmd == "reload " )
80
+ {
81
+ $ serv ->reload ($ serv );
82
+ }
83
+ elseif ($ cmd == "task " )
84
+ {
85
+ $ task_id = $ serv ->task ("hello world " );
86
+ echo "Dispath AsyncTask: id= $ task_id \n" ;
87
+ }
88
+ elseif ($ cmd == "taskwait " )
89
+ {
90
+ $ result = $ serv ->taskwait ("hello world " , 2 );
91
+ echo "SyncTask: result= $ result \n" ;
92
+ }
93
+ elseif ($ cmd == "hellotask " )
94
+ {
95
+ $ serv ->task ("hellotask " );
96
+ }
97
+ elseif ($ cmd == "close " )
98
+ {
99
+ $ serv ->send ($ fd , "close connection \n" );
100
+ $ result = $ serv ->close ($ fd );
101
+ }
102
+ elseif ($ cmd == "info " )
103
+ {
104
+ $ info = $ serv ->connection_info ($ fd );
105
+ $ serv ->send ($ fd , 'Info: ' .var_export ($ info , true ).PHP_EOL );
106
+ }
107
+ elseif ($ cmd == "broadcast " )
108
+ {
109
+ broadcast ($ serv , $ fd , "hello from $ fd \n" );
110
+ }
111
+ //这里故意调用一个不存在的函数
112
+ elseif ($ cmd == "error " )
113
+ {
114
+ hello_no_exists ();
115
+ }
116
+ //关闭fd
117
+ elseif (substr ($ cmd , 0 , 5 ) == "close " )
118
+ {
119
+ $ close_fd = substr ($ cmd , 6 );
120
+ $ serv ->close ($ close_fd );
121
+ }
122
+ elseif ($ cmd == "shutdown " )
123
+ {
124
+ $ serv ->shutdown ();
125
+ }
126
+ else
127
+ {
128
+ $ ret = $ serv ->send ($ fd , 'Swoole: ' .$ data , $ from_id );
129
+ var_dump ($ ret );
130
+ //$serv->close($fd);
131
+ }
132
+ //echo "Client:Data. fd=$fd|from_id=$from_id|data=$data";
133
+ //$serv->deltimer(800);
134
+ //swoole_server_send($serv, $other_fd, "Server: $data", $other_from_id);
135
135
}
136
136
137
137
function my_onTask (swoole_server $ serv , $ task_id , $ from_id , $ data )
138
138
{
139
- if ($ data == "hellotask " )
140
- {
141
- broadcast ($ serv , 0 , "hellotask " );
142
- }
143
- else
144
- {
145
- echo "AsyncTask[PID= " .posix_getpid ()."]: task_id= $ task_id. " .PHP_EOL ;
146
- return "Task OK " ;
147
- }
139
+ if ($ data == "hellotask " )
140
+ {
141
+ broadcast ($ serv , 0 , "hellotask " );
142
+ }
143
+ else
144
+ {
145
+ echo "AsyncTask[PID= " .posix_getpid ()."]: task_id= $ task_id. " .PHP_EOL ;
146
+ return "Task OK " ;
147
+ }
148
148
}
149
149
150
150
function my_onFinish (swoole_server $ serv , $ task_id , $ data )
151
151
{
152
- echo "AsyncTask Finish: result= {$ data }. PID= " .posix_getpid ().PHP_EOL ;
152
+ echo "AsyncTask Finish: result= {$ data }. PID= " .posix_getpid ().PHP_EOL ;
153
153
}
154
154
155
155
function my_onWorkerError (swoole_server $ serv , $ worker_id , $ worker_pid , $ exit_code )
156
156
{
157
- echo "worker abnormal exit. WorkerId= $ worker_id|Pid= $ worker_pid|ExitCode= $ exit_code \n" ;
157
+ echo "worker abnormal exit. WorkerId= $ worker_id|Pid= $ worker_pid|ExitCode= $ exit_code \n" ;
158
158
}
159
159
160
160
function broadcast ($ serv , $ fd = 0 , $ data = "hello " )
161
161
{
162
- $ start_fd = 0 ;
163
- echo "broadcast \n" ;
164
- while (true )
165
- {
166
- $ conn_list = $ serv ->connection_list ($ start_fd , 10 );
167
- if ($ conn_list === false )
168
- {
169
- break ;
170
- }
171
- $ start_fd = end ($ conn_list );
172
- foreach ($ conn_list as $ conn )
173
- {
174
- if ($ conn === $ fd ) continue ;
175
- sleep (5 );
176
- $ ret1 = $ serv ->send ($ conn , $ data );
177
- var_dump ($ ret1 );
178
- $ ret2 = $ serv ->close ($ conn );
179
- var_dump ($ ret2 );
180
- }
181
- }
162
+ $ start_fd = 0 ;
163
+ echo "broadcast \n" ;
164
+ while (true )
165
+ {
166
+ $ conn_list = $ serv ->connection_list ($ start_fd , 10 );
167
+ if ($ conn_list === false )
168
+ {
169
+ break ;
170
+ }
171
+ $ start_fd = end ($ conn_list );
172
+ foreach ($ conn_list as $ conn )
173
+ {
174
+ if ($ conn === $ fd ) continue ;
175
+ sleep (5 );
176
+ $ ret1 = $ serv ->send ($ conn , $ data );
177
+ var_dump ($ ret1 );
178
+ $ ret2 = $ serv ->close ($ conn );
179
+ var_dump ($ ret2 );
180
+ }
181
+ }
182
182
}
183
183
184
184
$ serv ->on ('Start ' , 'my_onStart ' );
@@ -193,8 +193,8 @@ function broadcast($serv, $fd = 0, $data = "hello")
193
193
$ serv ->on ('Finish ' , 'my_onFinish ' );
194
194
$ serv ->on ('WorkerError ' , 'my_onWorkerError ' );
195
195
$ serv ->on ('ManagerStart ' , function ($ serv ) {
196
- global $ argv ;
197
- swoole_set_process_name ("php {$ argv [0 ]}: manager " );
196
+ global $ argv ;
197
+ swoole_set_process_name ("php {$ argv [0 ]}: manager " );
198
198
});
199
199
$ serv ->start ();
200
200
0 commit comments