I have two PHP scripts, both using the same session by calling session_name('MySessID')
.
When the first script calls the second script using curl, the second script hangs when session_start()
is called.
Why would this happend?
I have two PHP scripts, both using the same session by calling session_name('MySessID')
.
When the first script calls the second script using curl, the second script hangs when session_start()
is called.
Why would this happend?
I don't totally understand why this happens, but I got it solved.
This bug describes the same problem I'm having. I have a scripts posting to another script, both using the same session, which apparently stalls PHP.
So, before I do the whole curl post script, I call the
session_commit
function, so ending the calling scripts session, and enabling the called script to restart the session.Whack...
From the php manual
http://php.net/manual/en/function.session-write-close.php
Session data is usually stored after your script terminated without the need to call session_write_close(), but as session data is locked to prevent concurrent writes only one script may operate on a session at any time. When using framesets together with sessions you will experience the frames loading one by one due to this locking. You can reduce the time needed to load all the frames by ending the session as soon as all changes to session variables are done.
So you can not have 2 scripts use the same session att the same time.
I got bitten by this as well. I fixed it thanks to the info provided in stackoverflow.
I had two pages, both had "session_start()" at the top and the first was calling the second with curl so I could POST variables to the second script after validation. The webserver was hanging until I added "session_write_close()".
Code sample follows: