Bug #10673: CURL/PHP causes lengthy Apache Keepalive
| From: | dave at backbeatmedia dot com | Date: | Fri, 04 May 2001 17:31:59 +0000 |
| Subject: | Bug #10673: CURL/PHP causes lengthy Apache Keepalive | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-53892@lists.php.net to get a copy of this message | ||
From: dave@backbeatmedia.com
Operating system: Linux
PHP version: 4.0.4pl1
PHP Bug Type: cURL related
Bug description: CURL/PHP causes lengthy Apache Keepalive
Greetings. I have Apache/1.3.14 (Unix) running with
PHP/4.0.4pl1 installed as a module and CURL 7.7.1 added to
that. Our web sites need to fetch a request from a remote
ad server in real-time as each page is generated. If $adr
is the request, I used to use:
$success = @readfile($adr);
But then I found CURL and saw that is (a) was more robust
and (b) seems to be more efficient than readfile. So I now
use CURL in he following way:
$aje_ch = @curl_init($adr);
@curl_setopt ($aje_ch, CURLOPT_TIMEOUT, 1);
@curl_setopt ($aje_ch, CURLOPT_MUTE, 1);
@curl_exec ($aje_ch);
@curl_close ($aje_ch);
This works great, except that if I have "Keepalive on" in
my Apache configuration file, the httpd server sits in
keepalive state for FAR longer when using CURL than it does
when using readfile. In the course of 2 or 3 hours, my
server would normally be at about 150 httpd processes
running at any given point in time. But when using CURL, it
jumps to 650 httpd processes, with the lions share (99%) of
those sitting in the keepalive state for very long. It
seems like the CURL requests are causing Apache to set its
Keepalive timeout to something much higher than it should
be. Setting "keepalive off" in Apache's conf file works
around this problem, but decreases server efficiency. I'd
love to solve this problem.
Please help! :-)
For the record, this was posted to the cURL bug tracker
over on SourceForge
(http://sourceforge.net/tracker/?func=detail&atid=100976&ai
d=418860&group_id=976), and we went through quite a few
gyrations with no success. Specifically, we tried
disabling KeepAlive on the REMOTE server to see if that had
any affect, and it did not. It seems not to matter what we
request from, rather that any requests using
PHP/cURL/Apache result in the LOCAL Apache bloating out of
control with KeepAlive requests. Reverting back to
readfile() based requests solves this problem but, well,
cURL is better. ;-)
All help would be appreciated, and I am available and
willing to test anything on our servers.
Thanks!
-Dave
--
Edit Bug report at: http://bugs.php.net/?id=10673&edit=1