Example #1
0
}
while (1) {
    $___TEMP_CONN_PORT_TRY = rand($room_poll_port_low, $room_poll_port_high);
    if (socket_bind($___TEMP_socket, '127.0.0.1', $___TEMP_CONN_PORT_TRY) !== false) {
        $___TEMP_CONN_PORT = $___TEMP_CONN_PORT_TRY;
        break;
    }
}
if (socket_listen($___TEMP_socket) === false) {
    ob_clean();
    die;
}
$uid = uniqid('', true);
$db->query("INSERT INTO {$gtablepre}roomlisteners (port,timestamp,roomid,uniqid) VALUES ('{$___TEMP_CONN_PORT}','{$timestamp}','{$roomid}','{$uid}')");
//等待30秒,没有接收到任何信息则直接退出
if (!__SOCKET_CHECK_WITH_TIMEOUT__($___TEMP_socket, 'a', 30, 0)) {
    $db->query("DELETE FROM {$gtablepre}roomlisteners WHERE (port,timestamp,roomid,uniqid) IN (('{$___TEMP_CONN_PORT}','{$timestamp}','{$roomid}','{$uid}'))");
    ob_clean();
    die;
}
if (!file_exists(GAME_ROOT . './gamedata/tmp/rooms/' . $roomid . '.txt')) {
    ob_clean();
    die;
}
$result = $db->query("SELECT * FROM {$gtablepre}rooms WHERE roomid='{$roomid}'");
if (!$db->num_rows($result)) {
    ob_clean();
    die;
}
$zz = $db->fetch_array($result);
if ($zz['status'] == 0) {
Example #2
0
     eval(import_module('sys', 'map', 'player', 'logger', 'itemmain', 'input'));
     sys\routine();
     $___TEMP_EXEC_START_TIME = microtime();
     include GAME_ROOT . './command.php';
     $___TEMP_WORKFLAG = 0;
     $___TEMP_tiused = get_script_runtime($___TEMP_EXEC_START_TIME);
     __SOCKET_DEBUGLOG__("执行完成。command.php本体耗时 " . $___TEMP_tiused . " 秒。");
     $jgamedata = ob_get_contents();
     ob_end_flush();
     if ($___MOD_CONN_W_DB) {
         $___TEMP_db->query("UPDATE {$___TEMP_tablepre}temp SET value='" . base64_encode($jgamedata) . "' WHERE sid='{$___TEMP_uid}'");
     } else {
         writeover($___MOD_TMP_FILE_DIRECTORY . $___TEMP_uid, $jgamedata);
     }
     //返回消息给client
     if (!__SOCKET_CHECK_WITH_TIMEOUT__($___TEMP_connection, 'w', 0, 200000)) {
         //允许最多0.2秒等待,这应该已经非常非常宽松了……
         __SOCKET_WARNLOG__("警告:socket_write等待时间过长。结束流程。");
     } else {
         if (!socket_write($___TEMP_connection, $___MOD_CONN_PASSWD . '_ok' . "\n")) {
             __SOCKET_WARNLOG__("警告:socket_write失败。结束流程。");
         }
     }
 }
 socket_close($___TEMP_connection);
 __SOCKET_DEBUGLOG__("关闭连接。");
 if (defined('MOD_REPLAY') && $___MOD_SRV && $___MOD_CODE_ADV3) {
     if (!isset($jgamedata['url'])) {
         $pid = (int) $pid;
         if (!file_exists(GAME_ROOT . './gamedata/tmp/replay/' . $room_prefix . '_/' . $pid)) {
             create_dir(GAME_ROOT . './gamedata/tmp/replay/' . $room_prefix . '_/' . $pid);
Example #3
0
function __SEND_TOUCH_CMD__($port)
{
    $___TEMP_socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    if ($___TEMP_socket === false) {
        return "socket_create失败。";
    }
    $___TEMP_connected = socket_connect($___TEMP_socket, '127.0.0.1', $port);
    if (!$___TEMP_connected) {
        return "socket_connect失败。";
    }
    //允许3秒等待
    if (!__SOCKET_CHECK_WITH_TIMEOUT__($___TEMP_socket, 'w', 3, 0)) {
        return "socket_write等待时间过长。";
    }
    //发送消息给server
    global $___MOD_CONN_PASSWD;
    if (!socket_write($___TEMP_socket, $___MOD_CONN_PASSWD . 'touch' . "\n")) {
        return "socket_write失败";
    }
    if (!__SOCKET_CHECK_WITH_TIMEOUT__($___TEMP_socket, 'r', 3, 0)) {
        return "socket_read等待时间过长。";
    }
    $___TEMP_ret = socket_read($___TEMP_socket, 1024, PHP_NORMAL_READ);
    if ($___TEMP_ret === false) {
        socket_shutdown($___TEMP_socket);
        return "socket_read失败。";
    } else {
        socket_shutdown($___TEMP_socket);
        if ($___TEMP_ret == "Received\n" || $___TEMP_ret == "Received_root\n") {
            if ($___TEMP_ret == "Received\n") {
                return 'ok';
            } else {
                return 'ok_root';
            }
        } else {
            return '回复信息异常。';
        }
    }
}