#44553 [Opn->Csd]: curl_multi does not processing multiple cURL handles in parallel with SOCKS5
| From: | administrator at gesoft dot org | Date: | Sat, 29 Mar 2008 06:48:23 +0000 |
| Subject: | #44553 [Opn->Csd]: curl_multi does not processing multiple cURL handles in parallel with SOCKS5 | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-123752@lists.php.net to get a copy of this message | ||
ID: 44553
User updated by: administrator at gesoft dot org
Reported By: administrator at gesoft dot org
-Status: Open
+Status: Closed
Bug Type: cURL related
Operating System: FreeBSD 6.1
PHP Version: 5.2.5
New Comment:
Daniel Stenberg <daniel_at_haxx.se> wrote:
"This is a known libcurl bug mentioned in docs/KNOWN_BUGS:"
http://curl.haxx.se/docs/knownbugs.html
"35. Both SOCKS5 and SOCKS4 proxy connections are done blocking, which
is very bad when used with the multi interface."
Previous Comments:
------------------------------------------------------------------------
[2008-03-27 16:17:39] administrator at gesoft dot org
Description:
------------
curl_multi does not processing multiple cURL handles in parallel when
SOCKS type proxies are used. This could be easily determined by checking
the spent time or by using any NET software to check amount of opened
connections for particular process (you will see that curl_multi opens
one or max two connections at a time)
Reproduce code:
---------------
$mh = curl_multi_init();
foreach ($servers as $server) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://google.com');
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_PROXY, trim($server));
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
curl_multi_add_handle($mh, $ch);
}
$microTime = GetMicroTime();
do {
do {
} while (curl_multi_exec($mh, $stillRunning) ===
CURLM_CALL_MULTI_PERFORM);
} while ($stillRunning);
$timeSpend = GetMicroTime() - $microTime;
echo sprintf('%01.4f', $timeSpend);
Expected result:
----------------
The maximum spent time should be ~5 sec.
Actual result:
--------------
While the actual value vary from 20 till 35 sec.
p.s. If you will use simple HTTP type proxies the result will be as
expected ~5 sec.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=44553&edit=1