?
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
  
<script type="text/javascript">
    //视图层ajax异步同源请求jsonp方式
    $('#button').click(function () {
        var title = $('#title').val();
        $.ajax({
            type: "post",
            url: "http://localhost/7/day_14/jsonp.php?title=" + title,
            dataType: "jsonp",
            jsonp: "callback",
            success: function (val) {
                console.log(val);
                if (val.error == 1) {
                    var str = "";
                    $.each(val.select, function (i, va) {
                        str += "<tr><td>" + va.id + "</td>";
                        str += "<td>" + va.name + "</td>";
                        str += "<td>" + va.pwd + "</td>";
                        str += "<td>" + va.fil + "</td>";
                        str += "<td>" + va.desc + "</td></tr>";
                    })
                    $('#num_price').html(val.num_price);
                    $('#memcache').html(val.memcache);
                    $('#sum').html(val.sum);
                    $('#linux').html(val.linux);
                    $('#table').html(str);
                else {
                    alert(val.error);
                }
            }
        })
    })
</script>
 
____________________服务器端_________________________
 
<?php
header("content-type:text/html;charset=utf-8");
 
 
/*jsonp请求方式
 * 传入参数jsonp请求参数:jsonp:"callback";(必填)
 * 传入参数get提交,要职位名称关键词:title=职位关键词(必填)
 *
 * 接口文档
 * 返回平均工资 num_price
 * 返回查询数据结果 select
 * 返回linux在职位描述中的出现次数 linux
 * 返回memcache在职位描述中的出现次数 memcache
 * 返回查询数据总条数 sum
 * 返回热词标绿处理
 * 返回错误提示,成功则返回1 error
 *
 *
 * xml请求方式
 * 传入参数
 * 传入参数get提交:xml=xml;(必填)
 * 传入参数get提交,要职位名称关键词:title=职位关键词(必填)
 * 返回xml格式数据
 * */
 
#jsonp接收
$function = isset($_GET['callback']) ? $_GET['callback'] : '';
#xml接收
$xml = isset($_GET['xml']) ? $_GET['xml'] : '';
 
#pdo('实习生');die;
 
#判断是传值方式
if (empty($xml) && empty($function)) {
    echo '选择传值方式,xml,jsonp';
    die("<a href='./接口说明文档.docx'>接口说明文档下载</a>");
}
 
#接收搜索词
$title = isset($_GET['title']) ? $_GET['title'] : '';
 
#echo $function."('$title')";die;
#判断是否有条件
if (!$title) {
    $reg['error'] = '无搜索条件';
    echo $function "(" . json_encode($reg) . ")";
    die;
}
 
#处理jsonp请求数据
if ($function) {
    $jsonp = jsonp($title);
    echo $function "(" . $jsonp . ")";
    die;
}
#处理xml请求数据
if ($xml) {
    echo xml($title);
}
 
#jsonp接口
function jsonp($title = '')
{
    $reg = pdo($title);
    return json_encode($reg);
}
 
#xml调用创建输出
function xml($title = '')
{
    $reg = pdo($title);
    echo arrTurnXml($reg);
}
 
#xml递归创建方法
function arrTurnXml($arr, $sim_obj = '')
{
    if ($sim_obj === '') {
        $sim = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><body></body>');
    else {
        $sim = $sim_obj;
    }
    foreach ($arr as $k => $v) {
        if (is_numeric($k)) {
            $k = 'item';
        }
        if (is_array($v)) {
            arrTurnXml($v, $sim->addChild($k));
        else {
            $sim->addChild($k, $v);
        }
    }
    return $sim->saveXml();
}
 
 
#pdo连库
function pdo($title = '')
{
    /*$id='';*/
    $reg = array();
    #开启缓存
    $memc = new Memcache();
    $memc->connect('127.0.0.1''11211');
    #清除缓存
    #$memc->flush();
    #获取缓存内容
    @$likes = $memc->get('likes');
    @$likes[$title]['num'] = $likes[$title]['num'] + 1;
    /*print_r($likes);die;*/
    #查询缓存数据
    if ($likes[$title]['num'] > 9) {
        $reg['select'] = $likes[$title]['text'];
        /*foreach($likes as $k=>$v)
        {
            if(substr_count($v['name'],$title)>0)
            {
                $reg['select'][]=$v;
            }
        }*/
    }
    #判断是否需要调用数据库查询
    if (!isset($reg['select'])) {
        #echo '11111111111111111111111111111';
        #连库
        $pdo = newPDO('mysql:host=127.0.0.1;dbname=js''root''rootjhj');
        $pdo->exec('set names utf8');
        #查询
        $reg['select'] = $pdo->query("select * from lianxi WHERE `name` LIKE '%$title%'")->fetchAll(PDO::FETCH_ASSOC);
    }
    #总月薪
    $price = array();
    #linux出现次数
    $reg['linux'] = 0;
    #memcache出现次数
    $reg['memcache'] = 0;
    foreach ($reg['select'] as $k => &$v) {
        #平均月薪
        $price = array_merge($price, explode('-', $v['fil']));
        $sum_price = array_sum($price) / ($k + 1) / 2;
        $reg['num_price'] = $sum_price;
        #计算linux出现次数
        $reg['linux'] = $reg['linux'] + substr_count(strtolower($v['desc']), 'linux');
        #计算memcache出现次数
        $reg['memcache'] = $reg['memcache'] + substr_count(strtolower($v['desc']), 'memcache');
        #计算数据条数
        $reg['sum'] = $k + 1;
        /*if($k>50){
            print_r($reg);die;
        }*/
        #获取搜索数据id
        /*$id.=','.$v['id'];*/
        #热词标记绿色并加入缓存
        if ($likes[$title]['num'] == 9) {
            $likes[$title]['text'][] = $v;
            $likes[$title]['like'] = $title;
        }
        foreach ($likes as $key => $val) {
            if ($val['num'] > 9) {
                $v['name'] = str_replace($val['like'], "<font color='green'>" . $val['like'] . "</font>", strtolower($v['name']));
            }
        }
        $memc->set("likes", $likes);
        #关键字标红
        $v['name'] = str_replace("$title""<font color='red'>$title</font>", strtolower($v['name']));
    }
    /*#更新数据库
    $id=substr($id,1);
    $pdo->exec("update lianxi set tel=tel+1 WHERE id in ($id)");*/
 
    #请求成功
    $reg['error'] = 1;
    #print_r($reg);
    return $reg;
}
 
  


---------------------------------------------------------------------------------------------
不忘初心 方得始终!

唯有志存高远,方能风行天下。

道之所存,虽千万人吾往矣! 情之所钟,虽千万里吾念矣~

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。