[development] sess_write() and PHP processes

John VanDyk jvandyk at iastate.edu
Wed May 17 23:55:00 UTC 2006


I think you may be confusing two things.

$_SESSION = 'foo';

this statement simply assigns a value to the $_SESSION superglobal. 
The superglobal is in memory at this point.

sess_write() is called by PHP's built-in session handling code. It is 
the very last thing called before PHP exits. Within this function, 
Drupal updates the appropriate database row with the value of 
$_SESSION.

So the sequence you gave is correct.

>Is sess_write() called by the same PHP process that handles page requests?
>
>I'm working with dado to debug node_import.module (see 
>http://drupal.org/node/63581).  node_import.module uses a $_SESSION 
>variable to control the workflow state, which is something I've not 
>seen often.
>
>Simply put, the workflow progresses normally for some people (e.g. 
>dado) and not for others (e.g. me).  For me, some variables in 
>$_SESSION are effectively not updated.  I say "effectively" because 
>$_SESSION is written twice.  The second write uses old values.
>
>At one point, I have the following debugging statements:
><?php
>
>watchdog('debug', 'Before');
>$_SESSION['node_import'] = $edit; // NOTE: sess_write() calls 
>watchdog('debug', 'Writing').
>watchdog('debug', 'After');
>
>?>
>
>The logs consistently show, in reverse chronological order:
>Writing
>After
>Before
>
>What's going on?
>
>Nic



More information about the development mailing list