Condivisione della sessione PHP, nel disperato tentativo di eseguire il codice in un ambito diverso

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

  •  30-10-2019
  •  | 
  •  

Domanda

Mi chiedo perché qualcosa del genere non funzionerebbe (in realtà non funziona):

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 è una pagina semplice che imposta solo il componente "nome utente" di $ _session, quindi scrive l'ID sessione in un file, dopo di che riecheggia il valore $ _session ['nome utente'].

Quindi:

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 è gestito da un Cronjob, ogni minuto, per circa 30 secondi (fino a quando il server lo uccide). Comunque in result.cc Trovo (in quei 30 secondi disponibili) il risultato atteso ... il valore di $ _get ['test'].

Ma non modifica il valore di $ _session ['nome utente'], in realtà non mi aspettavo nemmeno un tale comportamento, sapevo che il sonno non sarebbe stato abbastanza, ma comunque, in un aggiornamento non dovrebbe essere modificato? ...

So che il mio codice è terribile, è solo un test, se funziona sarebbe migliorato.

Ma non mi sembra di capirlo. Che cosa sto facendo di sbagliato? In realtà sto facendo molte cose sbagliate, il sistema stesso non dovrebbe essere usato in questo modo, lo so anche io, ma in questo momento questa è la mia unica opzione. Ho idee più complicate su questa cosa, ma se questo non funzionerà, gli altri non funzionano neanche.

La mia intenzione in realtà è quella di eseguire il codice in thread separato in modo da poter sfuggire ad alcune modifiche (come la registrazione di un wrapper per lo schema di file e non avere alcuna potenza di distervanire (ripristinarlo) quando ho bisogno, all'interno della classe wrapper) che è) Ho fatto lì. Metodo non ortodosso, lo so ...

Quindi, puoi aiutare con qualche idea? Grazie.

EDIT 1

Anche se mi conduce a un'idea interessante @Ben la risposta non era esatta ... In realtà nei cookie è mantenuto solo l'ID di sessione, ho sostituito la necessità di cookie usando un file, in modo che il Cronjob sapesse quale sessione dovrebbe essere modificata, Ho ottenuto il valore corretto per $ _session ['nome utente'] per qualsiasi sessione "registrata", ma anche così, non sono stato in grado di modificare i dannati valori, è stato come se fossero marcati lettura. Ora, riconsiderando, ho trovato l'idea ancora sui piedi, essendo praticabile e una soluzione. Quindi le mie domande sono ancora in piedi ... perché non dovrebbe funzionare?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top