Problem in accessing sessions variables by multiple threads or files in php

- Pranay on Sep 04 '14
- viewed 998 times

The session variables in php will be created in files on physical locations.. For each session a file will be created and the session data will be saved in this file with all the session variables and their values.

Eg: $SESSION['name']= 'username';

If a session variable is created and used as shown in the above eg, then the created session file will have the session variable name and its value in it. and in order to access/create sessions within a php file we need to declare in the first line of php file as "sessionstart();" - This statement actually locks the session file for writing.

So no other php file or thread can use this same session file. If any other page is having the line"sessionstart()" (i.e., if it is trying to access session variables)it has to wait until the initial php file which locked the file unlocks it..

If the initial page does not unlock the session file then the second file keeps on waiting and finally the server will throw time out error. This situation is possible when you are making simultaneous ajax calls for dynamic php pages which are using sessions in it.

The solution is..

Seems to be simple but very difficult to track this. It is not possible to make the sessions file to be used by multi threads but we can close the session file once your work with that is completed by using the below line of code.

sessionwriteclose();

This line will close the session file and makes it available for other threads/pages. Hence, if any other page is waiting for the session file it can access it without waiting for the complete execution of first page.

So it would be better if we save the required session data in some other local variables just afterthesessionstart() statement and close the session once we have used it.

Any better solution for this is appreciable!!!

About the author

Pranay Deegoju
Sitecore Certified Professional

A Software Engineer by profession, a part time blogger and an enthusiast programmer. You can find more about me here.



Leave your comments on this post here


SIGN UP AND GET LATEST UPDATES.

Recent Posts

×
 

Liked this article?

Subscribe with your email and get updates when ever a new article is posted.

By subscribing you agree to our privacy terms. We promise that we do not sell your data.