PHP Код TRY CATCH не выполняется, когда обнаруживает ошибку - PullRequest
0 голосов
/ 08 мая 2020

поэтому мой код не выполняется, когда он попадает в ловушку, и мне нужно, чтобы он продолжал работать, потому что есть еще кое-что, что нужно представить.

Это код:

$Query = new SourceQuery();

for ( $i_server = 0; $i_server < $servers_count; $i_server++ ):
    try {
        $Query->Connect( $server[ $i_server ][0], $server[ $i_server ][1], 3, SourceQuery :: SOURCE );
        $info[ $i_server ] = $Query->GetInfo();
        $return[ $i_server ]['players'] = $Query->GetPlayers();
        $return[ $i_server ]['ip'] = empty( $server_fakeip[ $i_server ] ) ? $server[ $i_server ][0] . ':' . $server[ $i_server ][1] : $server_fakeip[ $i_server ];
        $return[ $i_server ]['HostName'] = substr_unicode( $info[ $i_server ]['HostName'], 0, 43 ) . '..';
        if( file_exists( '../../../../storage/cache/img/maps/' . $info[ $i_server ]['AppID'] . '/' . array_reverse( explode( "/", $info[ $i_server ]['Map'] ) )[0] . '.jpg') ):
            $return[ $i_server ]['Map'] = array_reverse(explode("/", $info[ $i_server ]['Map']))[0];
            $return[ $i_server ]['Map_image'] = array_reverse(explode("/", $info[ $i_server ]['Map']))[0];
            $cache[ $i_server ] = $info[ $i_server ]['AppID'] . '/' . array_reverse(explode("/", $info[ $i_server ]['Map']))[0];
        else:
            $return[ $i_server ]['Map'] = array_reverse(explode("/", $info[ $i_server ]['Map']))[0];
            $return[ $i_server ]['Map_image'] = '-';
            $cache[ $i_server ] = '730/-';
        endif;
        $return[ $i_server ]['Players'] = $info[ $i_server ]['Players'];
        $return[ $i_server ]['MaxPlayers'] = $info[ $i_server ]['MaxPlayers'];
        $return[ $i_server ]['Mod'] = $info[ $i_server ]['AppID'];
    } catch ( Exception $e ) {
        $return[ $i_server ]['ip'] = empty( $server_fakeip[ $i_server ] ) ? $server[ $i_server ][0] . ':' . $server[ $i_server ][1] : $server_fakeip[ $i_server ];
        $return[ $i_server ]['HostName'] = "OFFLINE";
        $return[ $i_server ]['Map'] = '-';
        $return[ $i_server ]['Map_image'] = '-';
        $return[ $i_server ]['Players'] = 1;
        $return[ $i_server ]['MaxPlayers'] = 1;
        $return[ $i_server ]['Mod'] = '730';
        $cache[ $i_server ] = '730/-';
    } finally {
        $Query->Disconnect();
    }
endfor;

Обновление

Так, например, у меня есть 4 «значения», число 2 дает ошибку и попадает в ловушку. он не будет запускать 3 и 4, и мне нужно, чтобы он запускал их, чтобы я мог их показать.

if (servers != 0) {
    $.ajax({
        type: 'POST',
        url: "./app/modules/module_block_main_servers_monitoring/includes/ServerJS.php",
        data: ({data: servers}),
        dataType: 'json',
        global: false,
        async:true,
        success: function( data ) {
            for (var i = 0; i < data.length; i++) {
                jog_online += data[i]['Players']; //TotJogadores
                max_online += data[i]['MaxPlayers']; //TotJogadores
                document.getElementById('server-name-' + i).innerHTML = data[i]['HostName'];
                document.getElementById('server-map-image-' + i).setAttribute("src", "./storage/cache/img/maps/"+ data[i]['Mod'] +"/" + data[i]['Map_image'] + ".jpg");
                document.getElementById('server-players-' + i).innerHTML = data[i]['Players'] + "/" + data[i]['MaxPlayers'];
                document.getElementById('online_gr-' + i).setAttribute("style", "width:" + 100*data[i]['Players']/data[i]['MaxPlayers'] + "%");
                document.getElementById('server-ip-' + i).innerHTML = data[i]['ip'];
                document.getElementById('server-tablename-' + i).innerHTML = data[i]['HostName'];
                document.getElementById('server-tablemap-' + i).innerHTML = data[i]['Map'];
                document.getElementById('server-tablemod-' + i).setAttribute("src", "./storage/cache/img/mods/" + data[i]['Mod'] + ".png");
                document.getElementById('server-tableplayers-' + i).innerHTML = data[i]['Players'] + "/" + data[i]['MaxPlayers'];

                var b = 1;
                if( data[i]['players'].length > 0 ) {
                    console.log(data[i]['players']);
                    for (var i2 = 0; i2 < data[i]['players'].length; i2++) {
                        var str = '<tr>' +
                            '<th class="text-center">' + b++ + '</th>' +
                            '<th class="text-center">' + data[i]['players'][i2]['Name'] + '</th>' +
                            '<th class="text-center">' + data[i]['players'][i2]['Frags'] + '</th>' +
                            '<th class="text-center">' + data[i]['players'][i2]['TimeF'] + '</th>' +
                            '</tr>';
                        po = document.getElementById('players_online_' + i);
                        po.insertAdjacentHTML('beforeend', str);
                    }
                        var modal = document.getElementById('server-players-online-' + i );
                        document.getElementById('connect_server_' + i).setAttribute("href", "steam://connect/" + data[i]['ip'] );
                } else {
                    $('.btn_connect_' + i).prop("onclick", null).off("click");
                    $('.btn_connect_' + i).attr("href", "steam://connect/" + data[i]['ip'] )
                    $('.str_connect_' + i).attr("onclick", "document.location = 'steam://connect/" + data[i]['ip'] + "'" )
                }
            }
        }
    });
...