<?php /** * Created by PhpStorm. * User: ICHUNT * Date: 2019-03-28 * Time: 18:51 */ /** * 二维数组根据字段进行排序 * @params array $array 需要排序的数组 * @params string $field 排序的字段 * @params string $sort 排序顺序标志 SORT_DESC 降序;SORT_ASC 升序 */ function arraySequence($array, $field, $sort = 'SORT_DESC') { $arrSort = array(); foreach ($array as $uniqid => $row) { foreach ($row as $key => $value) { $arrSort[$key][$uniqid] = $value; } } array_multisort($arrSort[$field], constant($sort), $array); return $array; } /** * 钉钉发送请求curl方法 */ function SendAlarm($e){ if(stripos($e->getFile(),'RouteCollection.php')) return false; $message='时间:'.date('Y-m-d H:i:s')."\r\n".'任务:'.$e->getFile()."\r\n".'错误信息:'.$e->getMessage()."\r\n".'行号:'.$e->getLine(); SendRobot('',$message,false,Config('website.SystemName')); } /** * @param string $webhook 机器人地址 * @param string $message 消息内容 * @param bool|array $at 需要@的人 * @param string $sign 系统标记 * @return mixed */ function SendRobot($webhook='',$message,$at=false,$sign='未设置系统') { if(empty($webhook)) $webhook = "https://oapi.dingtalk.com/robot/send?access_token=d1e3ec2e48d250721276accbadb8defcf28ba8e6fd8644ee3f4c3ea4cf417bca"; $data = array ('msgtype' => 'text','text' => array ('content' => $message."\r\n系统:".$sign)); if($at!==true && is_array($at)) $data['at']=['atMobiles'=>$at]; $data_string = json_encode($data); $result = dtcurl($webhook, $data_string,true); return $result; } /** * 钉钉发送请求curl方法 */ function dtcurl($url,$data=null){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); if (!empty($data)){ curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_HTTPHEADER,array('Content-Type: application/json;charset=UTF-8')); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($curl); curl_close($curl); return json_decode($output,true); } /** * @param 错误码 $ErrCode * @param 错误描述 $ErrMsg * @return bool */ function ErrorLog($ErrCode=null,$ErrMsg=null){ $Route=debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2); $ErrFile=$Route[1]['file']; $line=$Route[1]['line']; $Action=$_SERVER['PHP_SELF']; if(empty($ErrCode)) return true; $ErrInfo=\LogReport::anlyError($ErrMsg,$ErrFile,$line,$ErrCode,$Action);//错误内容, 错误文件, 错误行数, 错误码, 错误方法名); 返回固定格式字符串,第一个参数可传数组 \LogReport::write($ErrInfo); //将anlyError返回的数据作参数传入 return true; } /** * @param array|bool $arr 指定收集的字段 * @param bool $empty 是否过滤空值 * @param array $data 需要过滤数据,不指定从get、post拿指定字段 * @return array|string */ function TrimX($arr = false, $empty = true, $data = []) { if (empty($data)) $data = \Illuminate\Support\Facades\Request::only($arr); if (is_array($data)) { foreach ($data as $k => $v) { if (!empty($v) && $v != '0' && !is_array($v)) { $data[$k] = trim($v); $data[$k] = trim($v, ' '); } if ($empty == true) if ((empty($v) && $v != 0) || $v == 'undefined' || $v == null) unset($data[$k]); if (is_array($arr) && count($arr) > 0 && count($data) > 0) { if (!in_array($k, $arr)) unset($data[$k]); } } } else { $data = trim($data); $data = trim($data, ' '); } return $data; } /** * @param string $url * @param array|bool $params * @param int|bool $ispost * @param array $header * @return bool|mixed */ function curl($url, $params = false, $ispost = 0, $header=[]) { $httpInfo = array(); $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36'); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在 if(!empty($header)){ curl_setopt($ch, CURLOPT_HTTPHEADER, $header); } if ($ispost) { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_URL, $url); } else { if ($params) { if (is_array($params)) { $params = http_build_query($params); } curl_setopt($ch, CURLOPT_URL, $url . '?' . $params); } else { curl_setopt($ch, CURLOPT_URL, $url); } } $response = curl_exec($ch); if ($response === FALSE) { // echo "cURL Error: " . curl_error($ch); return false; } curl_close($ch); return $response; } /** * @param array $data * @param string $key * @return mixed */ function ApiRequest($data,$key){ $data['k1']=time(); $data['k2']=MD5(MD5($data['k1']).$key); return $data; } function HproseClient($Url,$action,$data=''){ $connect=new \Hprose\Swoole\Http\Client($Url,false); $result=$connect->$action($data); $connect->close(); return $result; }