$param[$item[0]]) { error($action, 4001, "[{$item[0]}]{$tip}参数类型不符合,系统需求为浮点型[float]类型"); } break; case 'string': //如果要判断数据是否为字符串 if (empty($param[$item[0]])) { error($action, 4001, "[{$item[0]}]{$tip}参数不为空"); } if (!is_string($param[$item[0]]) || strlen($param[$item[0]]) == 0) { error($action, 4001, "[{$item[0]}]{$tip}参数类型不符合,系统需求为字符串[string]类型"); } break; case 'array': //如果要判断数据是否为数组 if (!is_array($param[$item[0]])) { error($action, 4001, "[{$item[0]}]{$tip}参数类型不符合,系统需求为数组[array]类型"); } if (count($param[$item[0]]) == 0) { error($action, 4001, "[{$item[0]}]{$tip}参数不为空"); } break; case 'int': //如果要判断数据是否为整数 if (!is_int($param[$item[0]])) { error($action, 4001, "[{$item[0]}]{$tip}参数类型不符合,系统需求为整数[int]类型"); } break; } } if (isset($param[$item[0]]) && !empty($param[$item[0]])) { if (!is_array($param[$item[0]])) { //如果是数组,跳过trim $param[$item[0]] = trim($param[$item[0]]); } } } //判断是否有未传入字段 if (!empty($not_param)) { error($action, 4001, '请上传:' . implode(',', $not_param) . '参数'); } unset($rule); return $param; } /** * Start worker * @param $process_name * @param $config * @return void */ function worker_start($process_name, $config) { $worker = new Worker($config['listen'] ?? null, $config['context'] ?? []); $property_map = [ 'count', 'user', 'group', 'reloadable', 'reusePort', 'transport', 'protocol', ]; $worker->name = $process_name; foreach ($property_map as $property) { if (isset($config[$property])) { $worker->$property = $config[$property]; } } $worker->onWorkerStart = function ($worker) use ($config) { // 加载数据库实例 Db::instance(); if (isset($config['handler'])) { if (!\class_exists($config['handler'])) { echo "process error: class {$config['handler']} not exists\r\n"; return; } $instance = Container::make($config['handler'], $config['constructor'] ?? []); \worker_bind($worker, $instance); } }; } /** * Bind worker * @param $worker * @param $class */ function worker_bind($worker, $class) { $callback_map = [ 'onConnect', 'onMessage', 'onClose', 'onError', 'onBufferFull', 'onBufferDrain', 'onWorkerStop', 'onWebSocketConnect' ]; foreach ($callback_map as $name) { if (\method_exists($class, $name)) { $worker->$name = [$class, $name]; } } if (\method_exists($class, 'onWorkerStart')) { \call_user_func([$class, 'onWorkerStart'], $worker); } } function record_sql_log($msg,$sql){ $time = date('Y-m-d H:i:s',time()); $dir = '/home/mes/log/workerman/' . 'sql-' . date('Y') . '-' . date('m') . '-' . date('d') . '.log'; $dir_name = dirname($dir); if(!file_exists($dir_name)){ $res = mkdir(iconv("UTF-8", "GBK", $dir_name),0777,true); } $fp = fopen($dir,"a"); $data = "[{$time}] sql.DEBUG:{$sql} {messge:{$msg}}"; //fwrite($fp,var_export($data,true)."\r\n");//写入文件 fwrite($fp,$data."\r\n");//写入文件 fclose($fp); }