Compartir la sesión de PHP, en un intento desesperado de ejecutar código en un alcance diferente

StackOverflow https://stackoverflow.com/questions/7430114

  •  30-10-2019
  •  | 
  •  

Pregunta

Me pregunto por qué algo como esto no funcionaría (en realidad no funciona):

4.php :

<php
session_start();

$my_id = session_id();

$_SESSION['username'] = (($_SESSION['username'] == 'nimic') ? 's-a schimbat' : $_GET['test']);

file_put_contents('comm.g', PHP_EOL.$my_id, FILE_APPEND);

sleep(3); // can be left out

echo $_SESSION['username'];

?>

4.php es una página simple que solo establece el componente "Nombre de usuario" de $ _Session, luego escribe la ID de sesión en un archivo, después de lo cual se hace eco del valor $ _Session ['UserName'].

Después:

3.php :

<php

while(true)
{
    if(file_exists("comm.g"))
    {
        $c = file("comm.g");
        unlink("comm.g");

        session_start();
        foreach($c as $k => $v)
        {
            if($v != '')
            {
                $my_id = session_id();
                session_write_close();
                session_id($v);
                session_start();
                file_put_contents("result.cc", $_SESSION['username'].'---'.$v.'END'.PHP_EOL.PHP_EOL, FILE_APPEND);
                $_SESSION['username'] = 'somethingelse';
                session_id($my_id);
                session_start();
            }
        }
        session_write_close();
    }
}
?>

3.php está ejecutado por un cronjob, cada minuto, durante unos 30 segundos (hasta que el servidor lo mata). De todos modos en result.cc Encuentro (en esos 30 segundos disponibles) el resultado esperado ... el valor de $ _get ['prueba'].

Pero no modifica el valor de $ _session ['nombre de usuario'], ni siquiera esperaba tal comportamiento en realidad, sabía que el sueño no sería suficiente, pero aún así, en una actualización, ¿no debería modificarse? ...

Sé que mi código es horrible, es solo una prueba, si funciona, se mejoraría.

Pero no parece que lo resuelva. ¿Qué estoy haciendo mal? En realidad, estoy haciendo muchas cosas mal, el sistema en sí no debería usarse así, lo sé también, pero aún así, en este momento, esta es mi única opción. Tengo ideas más complicadas sobre esto, pero si esto no funciona, los otros tampoco funcionarán.

Mi intención en realidad es ejecutar código en un hilo separado para poder escapar de algunos cambios (como registrar un contenedor para el esquema de archivo, y no tener poder para no registrarlo (restaurarlo) Hice allí. Método poco ortodoxo, lo sé ...

Entonces, ¿puedes ayudar con alguna idea? Gracias.

Edición 1

Incluso si me llevó a una idea interesante, la respuesta de Ben no era exacta ... en realidad en las cookies se mantiene solo la identificación de la sesión, reemplazé la necesidad de cookies usando un archivo, para que el Cronjob supiera qué sesión debería modificarse, Obtuve el valor correcto para $ _Session ['Nombre de usuario'] para cualquier sesión "registrada", pero aun así, no pude modificar los malditos valores, era como si estuvieran marcados lectamente. Ahora, reconsiderando, encontré la idea todavía en sus pies, siendo viable y una solución. Entonces mis preguntas todavía están actuadas ... ¿por qué no funcionaría?

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top