forked from zyfei/WarriorMan
-
Notifications
You must be signed in to change notification settings - Fork 0
/
php_workerman.c
104 lines (90 loc) · 2.1 KB
/
php_workerman.c
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
/* workerman extension for PHP */
#include "workerman.h"
#include "base.h"
#include "worker.h"
//创建协程接口方法声明
PHP_FUNCTION(workerman_coroutine_create);
//空的参数声明
ZEND_BEGIN_ARG_INFO_EX(arginfo_workerman_void, 0, 0, 0) //
ZEND_END_ARG_INFO()
//创建协程接口参数声明
ZEND_BEGIN_ARG_INFO_EX(arginfo_workerman_coroutine_create, 0, 0, 1) //
ZEND_ARG_CALLABLE_INFO(0, func, 0)
ZEND_END_ARG_INFO()
/**
* 模块初始化阶段
*/
PHP_MINIT_FUNCTION(workerman) {
//初始化worker
wmWorker_init();
//初始化base相关
workerman_base_init();
//初始化协程定义
workerman_coroutine_init();
//初始化connection
workerman_connection_init();
//初始化worker相关
workerman_worker_init();
//初始化channel
workerman_channel_init();
//初始化runtime
workerman_runtime_init();
return SUCCESS;
}
/**
* 模块关闭阶段
*/
PHP_MSHUTDOWN_FUNCTION(workerman) {
wmWorker_shutdown();
return SUCCESS;
}
/**
* 请求初始化阶段
*/
PHP_RINIT_FUNCTION(workerman) {
return SUCCESS;
}
/**
* 请求关闭阶段
*/
PHP_RSHUTDOWN_FUNCTION(workerman) {
return SUCCESS;
}
/**
* phpinfo相关信息
*/
PHP_MINFO_FUNCTION(workerman) {
php_info_print_table_start();
php_info_print_table_header(2, "workerman support", "enabled");
php_info_print_table_end();
}
PHP_FUNCTION(worker_event_wait) {
int ret;
ret = wm_event_wait();
if (ret < 0) {
RETURN_FALSE
}
RETURN_TRUE
}
static const zend_function_entry workerman_functions[] = { //
PHP_FE(workerman_coroutine_create, arginfo_workerman_coroutine_create) //
PHP_FALIAS(worker_go, workerman_coroutine_create, arginfo_workerman_coroutine_create) //
PHP_FE(worker_event_wait, arginfo_workerman_void) //
PHP_FE_END };
zend_module_entry workerman_module_entry = {
STANDARD_MODULE_HEADER, "workerman", //
workerman_functions, //
PHP_MINIT(workerman),
PHP_MSHUTDOWN(workerman),
PHP_RINIT(workerman),
PHP_RSHUTDOWN(workerman),
PHP_MINFO(workerman),
PHP_WORKERMAN_VERSION, //
STANDARD_MODULE_PROPERTIES //
};
#ifdef COMPILE_DL_WORKERMAN
# ifdef ZTS
ZEND_TSRMLS_CACHE_DEFINE()
# endif
ZEND_GET_MODULE(workerman)
#endif