I recently completed a project that required moving small amounts of data to different servers. Easy enough. The only complication was that it needed to make around 500 separate requests a minute (and growing), to different servers, with different data. Unfortunately cURL typically makes it requests in a synchronous fashion–the next event doesn’t fire until the previous one has completed. When you’re running 500 a minute, every minute, and you have to wait for the previous event to finish, you immediately start building a stockpile of requests–which is bad. Very bad. Every minute the queue grows bigger, and the performance becomes worse. However, cURL has a built in group of functions called curl_multi which allows you to send all of your requests simulatenously. It reduced the processing time so dramatically, that my software can now easily send the 500 requests in under 10 seconds. To that end, I ended up rewriting a function I found over at phpied.com to handle a variety of different scenarios involving post and get parameters. Most of the documentation you need can be found in the example.php file where I included a bunch of different case scenarios.
You can download all the necessary info here: Multi Poster cURL Library.