Obtenga las dimensiones de pantalla y ventana de visualización del usuario en PHP en la primera carga

Quiero obtener en PHP la altura / anchura de la pantalla y la ventana gráfica cuando un usuario visita una página.

He intentado diferentes maneras pero todas causan otros problemas.

Mis metas:

Obtenga la información de la primera carga (sin página de salto, sin recargar).

No cambiar la url

No afecta al resto del PHP que se ejecuta en la carga, o hace que PHP se ejecute dos veces

Lo que he probado hasta ahora:

Javascript para obtener las dimensiones de la ventana gráfica:

if(!isset($_POST['width']) || !isset($_POST['height'])) {
echo '
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
    var height = $(window).height();
    var width = $(window).width();
    $.ajax({
        type: \'POST\',
        data: {
            "height": height,
            "width": width
        },
        success: function (data) {
            $("body").html(data);
        },
    });
});
</script>
';
}

$user_width = $_POST['width'];
$user_height = $_POST['height'];

problemas: hace que todos los php se ejecuten dos veces, una vez en la carga, una vez que devuelve un valor (la segunda vez es aproximadamente 4 segundos después de la primera), lo que hace que el resto del php sea raro ... también, hace que la carga de la página sea muy lenta

Poniendo las dimensiones de la pantalla en la url:

if(isset($_SESSION['screen_width']) AND isset($_SESSION['screen_height'])){
    $user_width = $_SESSION['screen_width'];
    $user_height = $_SESSION['screen_height'];
    } else if(isset($_REQUEST['width']) AND isset($_REQUEST['height'])) {
        $_SESSION['screen_width'] = $_REQUEST['width'];
        $_SESSION['screen_height'] = $_REQUEST['height'];
        header('Location: ' . $_SERVER['PHP_SELF']);
    } else {
        echo '<script type="text/javascript">window.location = "' . $_SERVER['PHP_SELF'] . '?width="+screen.width+"&height="+screen.height;</script>';
    }

problemas: cambia la URL (que afecta a otros códigos y se ve mal en comparación con las URL sin expresión que tienen ahora); no devuelve tamaño de ventana gráfica

Soy un novato. Tal vez es fácil de hacer, pero realmente no lo sé. Busqué mucho Así es como tengo los métodos anteriores. Pero no pude hacer que trabajaran para mí. Afaik, no he visto una solución en ninguna parte para una situación similar.

Gracias :)

Respuestas a la pregunta(2)

Su respuesta a la pregunta