Reputation: 7888
If you are familiar with programing languages like VB.NET, you know there is something name Shared-Memory which is shared between different instance of application. My question is :Are session variables behave the same in PHP or not?
Assume this scenario:
I click twice on a link in my web-site (Both requests are sent with same headers, same cookies but in different times). $_SESSION['num']
is set to 0
and now:
On 12:00:00.01 first request is received by the server
On 12:00:00.03 first request starts its session
On 12:00:00.04 second request is received by the server
On 12:00:00.05 second request starts its session.
On 12:00:00.06 first process adds 10
to value of $_SESSION['num']
.
On 12:00:00.07 second process adds 10
to value of $_SESSION['num']
.
On 12:00:00.09 both processes are finished.
Now , there are two possible answers:$_SESSION['num']
is 10
or $_SESSION['num']
is 20. Which one is the answer?
Upvotes: 0
Views: 464
Reputation: 48367
The usual answer to your uestion is "what happened when you tested it?"
PHP will store your sessions wherever you tell it to store the sessions: files, shared memory, a database. By default it uses files. The session is retrieved from storage when you call session_start() it is written back to storage when you call session_write_close(), or the script exits.
If your session handler acquires a lock on the storage, then the second instance will be blocked until the first instance writes back the changes. The default files handler acquires locks.
Upvotes: 2