-
Notifications
You must be signed in to change notification settings - Fork 5
/
http_server.php
100 lines (73 loc) · 2.72 KB
/
http_server.php
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
<?php
/**
* by suibin
* 2017-9-11
*/
// 设置脚本最大运行内存,根据字典大小调整
ini_set('memory_limit', '1024M');
// 设置时区
date_default_timezone_set('Asia/Shanghai');
// 加载助手文件
require_once('FilterHelper.php');
// http服务绑定的ip及端口
$serv = new swoole_http_server("0.0.0.0", 9502);
// 字典树文件路径,默认当时目录下
$tree_file = 'blackword.tree';
// 清除文件状态缓存
clearstatcache();
// 获取请求时,字典树文件的修改时间
$new_mtime = filemtime($tree_file);
// 获取最新trie-tree对象
$trie = FilterHelper::get_trie($tree_file, $new_mtime);
$serv->set(array(
//'worker_num'=>4,//默认不设置,或者CPU数量
//'max_request'=>10000,//限制并发数,会降低性能
//'daemonize' => 1,//不能开
'log_file' => 'swoole_server.log',
// 'user' => 'www',
// 'group' => 'www'
));
$serv->on('Start', function($serv) use($trie){
$name="guanjianzi_swoole";
if (function_exists('cli_set_process_title')) {
cli_set_process_title($name);
} else {
if (function_exists('swoole_set_process_name')) {
swoole_set_process_name($name);
} else {
trigger_error(__METHOD__ . " failed. require cli_set_process_title or swoole_set_process_name.");
}
}
});
/**
* 处理请求
*/
$serv->on('Request', function($request, $response) use($trie) {
// xhprof_enable();
// 接收get请求参数
$content = isset($request->get['content']) ? $request->get['content']: '';
$arr_ret = array();
if (!empty($content)) {
$arr_ret['memory'] = (memory_get_peak_usage() / 1024 / 1024) . 'M';
// 执行查找敏感词
$stime = microtime(true);
$arr_ret['data'] = $trie->search_all($content);
$etime = microtime(true);
$arr_ret['time'] = sprintf('%01.6f', $etime-$stime);
// echo json_encode($arr_ret)."\n";
}
// $arr_ret['time'] = sprintf('%01.6f', $etime-$stime);
// $arr_ret['memory'] = (memory_get_peak_usage() / 1024 / 1024) . 'M';
// $xhprof_data = xhprof_disable();
// $XHPROF_ROOT = '/var/www/xhprof';
// include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
// include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";
// $xhprof_runs = new XHProfRuns_Default();
// $run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo");
// 定义http服务信息及响应处理结果
$response->cookie("User", "founder");
$response->header("X-Server", "http WebServer(Unix) (Red-Hat/Linux)");
$response->header('Content-Type', 'Content-Type: text/html; charset=utf-8');
$response->end(json_encode($arr_ret));
});
$serv->start();