I've got a session handler class that calls session_write_close() in the finish from the script. This protects that even when a header() or exit() is released the session information is saved.

public function __destruct()

However, I've observed that for just one of my AJAX pages TWO session updates are committed through the database layer.

My prediction would be that the [1] page loads and transmits an [2] AJAX request. That [2] AJAX request has to start the session prior to the [1] page has an opportunity to call session_write_close().

Following the [2] AJAX page has loaded the session then your [1] page finally saves the session after which soon after the [2] AJAX request saves it's session - which overwrites the first!

It could seem like this:

[1] page loads session
[1] page sends output
[2] ajax loads session
[1] page saves session
[2] ajax sends output
[2] ajax saves session

Exactly what do I actually do to make certain one page is not loading a session before another has an opportunity to save the session?

The assumption was wrong.

...session information is locked to avoid concurrent creates just one script may work on a session anytime http://us.php.net/session_write_close

Quite simply, you may be running 100 AJAX demands for any user simultaneously and they'd each wait their turn.

My problem switched to be a mistake in choosing the best session table column leading to my periods being re-produced each load.