101 lines
2.9 KiB
PHP
101 lines
2.9 KiB
PHP
<?php
|
|
/**处理ajax请求的消息
|
|
* Created by PhpStorm.
|
|
* User: ddcai
|
|
* Date: 2018/6/8
|
|
* Time: 15:11
|
|
*/
|
|
|
|
class ajax_user_msg{
|
|
|
|
//检查用户的权限,以及返回解密的数据
|
|
/*
|
|
* $msg=>加密的消息内容,
|
|
* $ip=>发送消息的服务器IP
|
|
*/
|
|
|
|
public function check_right($msg,$ip){
|
|
if(empty($msg)){
|
|
return false;
|
|
}
|
|
if(!in_array($ip,SYS_SERVER_IP)){
|
|
return false;
|
|
}
|
|
$msg_arr = get_login_token($msg);
|
|
if( !empty($msg_arr)
|
|
&& !empty($msg_arr['uid'])
|
|
&& !empty($msg_arr['a'])
|
|
&& !empty($msg_arr['m'])
|
|
&& !empty($msg_arr['do_a'])
|
|
&& !empty($msg_arr['d'])
|
|
){
|
|
return $msg_arr;
|
|
}else{
|
|
return false;
|
|
}
|
|
|
|
}
|
|
|
|
//把需要发送的消息加入消息队列
|
|
/*
|
|
$server=>服务器
|
|
$data=>array(
|
|
't'=>生成消息的时间,
|
|
'uid'=>用户的UID,
|
|
'a'=>要执行的动作,
|
|
'm'=>要执行的模块,
|
|
'd'=>相关的数据(数组)
|
|
)
|
|
*/
|
|
public function do_push_act($server,$data){
|
|
$myredis = new myredis();
|
|
//判断一下这个用户是不是在这个服务器建立了长连接
|
|
$tmp_fd = $server->get_user_by_uid($data['uid']);
|
|
if(!empty($tmp_fd)){
|
|
return set_reids_push($myredis,USER_INFO_LIST,$data);
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//即时执行某个操作
|
|
/*
|
|
$server=>服务器
|
|
$data=>array(
|
|
't'=>生成消息的时间,
|
|
'uid'=>用户的UID,
|
|
'a'=>要执行的动作,
|
|
'm'=>要执行的模块,
|
|
'd'=>相关的数据(数组)
|
|
)
|
|
*/
|
|
public function do_act($server,$data){
|
|
//判断一下这个用户是不是在这个服务器建立了长连接
|
|
$tmp_fd = $server->get_user_by_uid($data['uid']);
|
|
if(!empty($tmp_fd) || $data['uid']==1){
|
|
|
|
//如果有合法的参数,则执行请求的操作
|
|
if(!empty($data) && isset($data["a"]) && isset($data["m"]) && isset($data["d"]) ) {
|
|
|
|
//判断两个要执行的内容是否正常
|
|
if (!preg_match("/^[a-zA-Z0-9_]+$/", $data["a"]) || !preg_match("/^[a-zA-Z0-9_]+$/", $data["m"])) {
|
|
$server->_echo_log("要执行的方法里只能包含字母、数字、下画线\r\n");
|
|
return false;
|
|
}
|
|
//判断是否有这个类
|
|
if (!class_exists($data['m'])) {
|
|
$server->_echo_log(__FILE__ . "找不到对应的类: " . $data['m'] . ":" . __LINE__);
|
|
return false;
|
|
}
|
|
$data['fd'] = $tmp_fd['fd'];
|
|
$tmp_task_id = $server->server->task($data);
|
|
$server->_echo_log("ajax进行task任务:".$tmp_task_id);
|
|
return true;
|
|
}
|
|
|
|
}
|
|
return false;
|
|
}
|
|
|
|
|
|
} |