ID: 30589
User updated by: brian dot foddy at nwa dot com
Reported By: brian dot foddy at nwa dot com
-Status: Feedback
+Status: Open
Bug Type: Performance problem
Operating System: Solaris 2.8
PHP Version: 5.0.2
New Comment:
Thanks for the quick reply, but
I modified the sample script to
<?php
session_write_close();
print ("starting1");
flush ();
touch ("foo.dat");
sleep (60);
?>
Done.
but it has no effect.
The flush call is only for demonstration/debug, my actual
script where I noticed the problem doesn't have this call.
The
contents of php.ini Session section are (comments removed),
pretty standard I believe:
[Session]
session.save_handler = files
session.save_path = /tmp
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_domain = session.serialize_handler = php
session.gc_probability = 1
session.gc_maxlifetime = 1440
session.referer_check =
session.entropy_length = 0
session.entropy_file =
; session.entropy_length = 16
; session.entropy_file = /dev/urandom
session.cache_limiter = nocache
session.use_trans_sid = 1
url_rewriter.tags =
"a=href,area=href,frame=src,input=src,form=fakeentry"
Previous Comments:
------------------------------------------------------------------------
[2004-10-27 23:33:57] [EMAIL PROTECTED]
You're probably using session_auto_start or something. Run
session_write_close() as first statement to close the session, this
will allow your script to run concurrently.
------------------------------------------------------------------------
[2004-10-27 22:49:22] brian dot foddy at nwa dot com
Description:
------------
Frankly I can't believe this is a bug, but I can't
find any config to change this behavior...
Using 5.0.2 on Solaris 2.8 and Apache 1.3.22,
we are unable to have concurrent execuation of
the same script at the same time. Any attempt
to run the script below from 2 browsers,
the first one will start normally, displaying
"starting", then during the sleep, try a second
request and it will not begin any execution
until the first request completes, then it begins
its normal execution.
If this script is duplicated to a different
file name,
ie: concurrent1.php and concurrent2.php, then
both can execute at the same time as you would expect.
This server was upgraded from version 4.3x some
months back and I'm sure it didn't have this
behavior. In general our server is a low-volume
intranet server so this problems only shows up
on rare occasions when a specific web app is
needed.
Apache config:
MinSpareServers 2
MaxSpareServers 12
StartServers 8
MaxClients 20
The web server is not reaching these limits for
my tests.
Reproduce code:
---------------
<?php
print ("starting");
flush ();
touch ("foo.dat");
sleep (60);
?>
Done.
Execute from 2 browsers at the same time.
Expected result:
----------------
Both browsers should show "starting" then
wait the 60 seconds.
Actual result:
--------------
The first request starts normally, the second
page waits for the first to complete before the
second begins.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=30589&edit=1