problema con session.gc_maxlifetime

Giuliotresauri

Nuovo Utente
9 Nov 2008
21
0
0
In windows xp su server apache versione 2.0.62 e php versione 5.2.6 , provo a far girare questo script senza chiudere mai il broswer (cliccando sempre sul pulsante del form),siccome quello che mi aspetto è l'incremento di valore del session.gc_maxlifetime,invece ogni volta che riparte lo script il valore riparte da 1440 (default del php.ini).

Ecco il semplice script (add_sess.php):

PHP:
<?php
session_start();
$old=ini_get('session.gc_maxlifetime');
echo "valore attuale=$old";
ini_set('session.gc_maxlifetime',$old+120);
echo " valore new=".ini_get('session.gc_maxlifetime');

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form method="get" id="formricerca" action="add_sess.php">
<input type="submit" value="invia" />
</form>
</body>
</html>

Ogni volta che faccio partire lo script mediante il pulsante (quello del submit),mi compaiono sempre gli stessi valori:

valore attuale=1440 valore new=1560

mentre io mi aspetterei degli incrementi,per esempio

valore attuale=1560 valore new=1680
valore attuale=1680 valore new=1800

....

E' come se,rimanendo attiva la stessa finestra di browser,una volta che il valore di session.gc_maxlifetime viene cambiato,quando termina lo script si perde il valore nuovo e lo script riparta sempre dal valore memorizzato in php.ini.

Ho provato a far girare lo script mettendo la session_start() all'ultimo,dopo le varie ini(),e ottengo sempre il medesimo risultato.

Come mai succede questo?
 
Ultima modifica di un moderatore:
ciao
se non ho capito male (probabile), se leggi il manuale php a ini_set

Sets the value of the given configuration option. The configuration option will keep this new value during the script's execution, and will be restored at the script's ending.

cioè i valori vengono ripristinati alla fine dello script, quindi quando esci da add_sess.php ti ritrovi il vecchio valore, anche se non esci dal bw.
non hai creato una sessione
 
Come ha detto borgo, ini_set() serve proprio per modificare un'opzione di configurazione a livello di runtime, cioè durante l'esecuzione dello script. Ovviamente i valori modificati valgono solamente per la richiesta corrente (quindi se un altro utente si connette contemporaneamente non cambia niente). Non è che alla fine vengono ripristinati, non vengono mai cambiati nel file, solamente nell'interprete PHP.
 

Discussioni simili