Пример #1
0
/** 이미지 크기 변환
 * @class file
 * @param
		$data: addFile data
		-dir: 복사본으로 생성할 경우 생성될 경로
		-width: 이미지 너비
		-height: 이미지 높이
		-type: 썸네일 타입 (1일 경우 크기에 맞게 사진을 늘림)
		-skip_update: 쿼리 업데이트를 생략
 */
function resizeImage(&$data, $param = '')
{
    global $mini;
    $param = param($param);
    def($param['type'], 0);
    iss($param['width']);
    iss($param['height']);
    iss($param['dir']);
    // 따로 저장할 경우(i.e 썸네일) 디렉토리 생성
    if (!empty($param['dir'])) {
        $is_thumb = 1;
        if (!is_dir($param['dir'])) {
            if (!mkdir($param['dir'], 0707)) {
                __error("[resizeImage: {$param['dir']}] 디렉토리를 생성할 수 없습니다");
            }
        }
    } else {
        $param['dir'] = dirname("{$mini['dir']}{$data['url']}");
        if ($param['dir']) {
            $param['dir'] .= "/";
        }
    }
    //+debug
    //	__error(preg_replace("/(\s|\n|\t)/", "", htmlspecialchars($image)));
    //	__error("{$mini['pdir']}addon/phpthumb/phpThumb.php?no={$data['no']}&PHPSESSID=".session_id()."&w={$param['width']}&h={$param['height']}&iar={$param['type']}");
    // 이미지 저장하기
    $file_url = "{$param['dir']}" . basename($data['url']);
    $fp = fopen($file_url, "w+");
    if ($fp) {
        $image = getSocket("\n\t\t\tmethod: get\n\t\t\turl: {$mini['pdir']}addon/phpthumb/phpThumb.php?no={$data['no']}&PHPSESSID=" . session_id() . "&w={$param['width']}&h={$param['height']}&iar={$param['type']}\n\t\t\tskip_header: 1\n\t\t");
        fwrite($fp, $image, strlen($image));
        fclose($fp);
        @chmod($file_url, 0777);
        $ins = array();
        // 이미지 정보 다시 입력
        if (empty($is_thumb)) {
            $img = getimagesize($file_url);
            $ins['size'] = strlen($image);
            $ins['width'] = $img[0];
            $ins['height'] = $img[1];
            $tmp_data = $ins;
            $tmp_data['path'] = $file_url;
            $ins['hash'] = getHash($tmp_data);
        } else {
            $ins['is_thumb'] = !empty($is_thumb);
        }
        if (!empty($param['skip_update'])) {
            return $ins;
        } else {
            sql("UPDATE {$mini['name']['file']} SET " . query($ins, 'update') . " WHERE no={$data['no']}");
            return true;
        }
    } else {
        return false;
    }
}
Пример #2
0
function postaction()
{
    global $DB, $session_id, $player_id, $players_ids;
    $data = $_POST['data'];
    if ($players_ids != '') {
        if (strpos($players_ids, '#' . $player_id . '#') === false) {
            // Si on ne fait pas partie des "joueurs" (donc on est un spectateur), alors on ne participe pas activement à l'action.
            echo json_encode(array('id' => -1));
            die;
        }
    }
    // TODO Vérifier l'action (à développer dans un second temps)
    if ($data['action'] == 'sync') {
        // Gérer l'action 'sync'
        $socket = getSocket();
        stream_set_timeout($socket, 10);
        // Timeout de 10 secondes.
        $nbconnections = substr_count($players_ids, '#') - 1;
        fwrite($socket, $player_id . ',' . $nbconnections . "\n");
        // n > 1 = On débloque tout le monde dès que n connexions ont envoyé un nombre > 1
        if (fread($socket, 1) == $nbconnections) {
            // On est le dernier : on ajoute l'action en base
            connectMysql('dyn');
            $DB->query("INSERT INTO actions (session_id, player_id, dateaction, actiondata) VALUES (" . $session_id . ", " . $player_id . ", NOW(), '" . addslashes(json_encode($data)) . "')");
        }
        fwrite($socket, '1');
        // On valide l'action
        @fclose($socket);
        echo json_encode(array('id' => 0));
        die;
    }
    // Ajouter l'action en base
    connectMysql('dyn');
    $DB->query("INSERT INTO actions (session_id, player_id, dateaction, actiondata) VALUES (" . $session_id . ", " . $player_id . ", NOW(), '" . addslashes(json_encode($data)) . "')");
    $action_id = $DB->lastInsertId();
    // "Réveiller" les autres joueurs pour leur indiquer qu'il y a une nouvelle action à lire
    $socket = getSocket();
    stream_set_timeout($socket, 10);
    // Timeout de 10 secondes.
    fwrite($socket, $player_id . ",1\n");
    // 1 = On débloque tout le monde immédiatement !
    @fclose($socket);
    echo json_encode(array('id' => $action_id));
}
Пример #3
0
function writeSocket($stmt, $address, $port)
{
    $socket = getSocket($address, $port);
    //socket_write($socket, $stmt, strlen($stmt));
    socket_send($socket, $stmt, strlen($stmt), MSG_DONTROUTE);
}
Пример #4
0
function readBySocket($server, $ip, $message)
{
    // Retrieve socket number
    $socketNumber = getSocket($server);
    $socketServerNumber = getSocket("serverPHP");
    // Init socket
    $sock1 = socket_create(AF_INET, SOCK_STREAM, 0);
    // create connection
    socket_connect($sock1, $ip, $socketNumber);
    // send data
    $message = $socketServerNumber . " 0 " . $message;
    socket_send($sock1, $message, strlen($message), 0);
    socket_close($sock1);
    // Create server for receiving data
    if (!($sock = socket_create(AF_INET, SOCK_STREAM, 0))) {
        $errorcode = socket_last_error();
        $errormsg = socket_strerror($errorcode);
        die("Couldn't create socket: [{$errorcode}] {$errormsg} \n");
    }
    // Bind the source address
    if (!socket_bind($sock, $ip, $socketServerNumber)) {
        $errorcode = socket_last_error();
        $errormsg = socket_strerror($errorcode);
        socket_close($sock);
        die("Could not bind socket : [{$errorcode}] {$errormsg} \n");
    }
    if (!socket_listen($sock, 10)) {
        $errorcode = socket_last_error();
        $errormsg = socket_strerror($errorcode);
        socket_close($sock);
        die("Could not listen on socket : [{$errorcode}] {$errormsg} \n");
    }
    socket_set_nonblock($sock);
    //start loop to listen for incoming connections
    $timeout = 4000;
    $startMillisensond = round(microtime(true) * 1000);
    while (round(microtime(true) * 1000) - $startMillisensond < $timeout) {
        // Trick ...
        usleep(100);
        //Accept incoming connection - This is a blocking call
        $client = socket_accept($sock);
        if ($client !== FALSE) {
            //read data from the incoming socket
            $input = socket_read($client, 1024000);
            socket_close($sock);
            return $input;
        }
        usleep(100);
    }
    return "TIMEOUT";
}