An example of how to make parallel POST/GET requests through a reusable function:
http://www.phpied.com/simultaneuos-http-requests-in-php-with-curl/
curl_multi_init
(PHP 5)
curl_multi_init — Gibt einen cURL-Multi-Handle zurück
Beschreibung
resource curl_multi_init
( void
)
Erlaubt die parallele Verarbeitung mehrerer cURL-Handles.
Parameter-Liste
- mh
-
Ein von curl_multi_init() zurückgegebenes cURL-Multihandle.
Rückgabewerte
Gibt im Erfolgsfall ein cURL-Handle zurück, andernfalls FALSE.
Beispiele
Beispiel #1 curl_multi_init() Besipiel
In diesem Beispiel werden zwei cURL-Handles erstellt, einem Mehrfach-Handle hinzugefügt und anschliessend parallel ausgeführt.
<?php
// zwei cURL Resourcen erstellen
$ch1 = curl_init();
$ch2 = curl_init();
// URL und weitere Optionen setzen
curl_setopt($ch1, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/");
curl_setopt($ch2, CURLOPT_HEADER, 0);
// Mehrfach-Handle erstellen
$mh = curl_multi_init();
// die zuvor erstellten Handles hinzufügen
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);
$running=null;
// Handles ausführen
do {
curl_multi_exec($mh,$running);
} while ($running > 0)
//close the handles
curl_multi_remove_handle($ch1);
curl_multi_remove_handle($ch2);
curl_multi_close($mh);
?>
curl_multi_init
ssttoo at gmail dot com
25-Feb-2008 05:57
25-Feb-2008 05:57
Anonymous
24-Jan-2008 10:09
24-Jan-2008 10:09
In the example above, rather than busy looping, curl_multi_select() should be used. The call isn't adequately described in the php documentation, so you need to look at the libcurl-multi man page. curl_multi_fdset() on this page is curl_multi_select() here, and curl_multi_perform() is curl_multi_exec() here. Read on and write better code.
php at twobears dot cz
17-Dec-2007 10:02
17-Dec-2007 10:02
It's not good to use plain while cycle like in the example because you are going to consume all the cpu time just by checking if you are not done. E.g. using usleep(50) in the middle of while could solve that gracefully...
snoyes at gmail dot com
30-Jul-2007 07:39
30-Jul-2007 07:39
In the example shown, the calls to curl_multi_remove_handle() should include the resource as the first parameter:
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
