82 Commits

Author SHA1 Message Date
Zach Borboa cdad9e1a01 Rename variable to use isChildOfMultiCurl as method name 2018-07-07 03:59:46 -07:00
Zach Borboa e240b43606 Fix #511: Use correct body in POST requests that use empty data arrays.
This fixes JSON POST requests incorrectly sending a serialized empty
array "[]" instead of an empty request body by default.
2018-04-26 02:49:21 -07:00
Zach Borboa a028011f3d Fix #506: Remove content-length header for PATCH requests when data is empty 2018-04-09 01:03:40 -07:00
Zach Borboa 83cd9d14ee Update comment to match new behavior 2018-03-06 22:17:38 -08:00
agapov97 caf1ec2062 multicurl - starting new requests while curls array is not empty and activeCurls array size less than concurrency 2018-02-26 17:21:21 +03:00
Zach Borboa 40f7026185 Fix #493: Build POST data correctly when headers have been set.
Call MultiCurl::queueHandle sooner so that headers are correctly set when Curl::buildPostData is called and builds POST data differently depending on the request content-type.
2018-01-26 00:58:37 -08:00
Zach Borboa 44c1539ba6 Fix decoders set on individual instances ignored 2018-01-25 22:49:57 -08:00
Zach Borboa 21729d22a9 Use Curl::setCookies in favor Curl::setCookie in loop 2018-01-25 21:20:11 -08:00
Zach Borboa 50927dd294 Rename callbacks 2018-01-25 20:29:55 -08:00
Zach Borboa aa74a1cea4 Clean up 2018-01-25 19:52:20 -08:00
Zach Borboa 4ec89be9bc Allow setRetry() methods to use callables 2017-09-02 02:23:40 -07:00
Zach Borboa 0f1e16a6fa Implement MultiCurl::setRetry() 2017-08-31 01:26:42 -07:00
Zach Borboa 2264362338 Clean up namespacing 2017-04-30 15:58:33 -07:00
Zach Borboa d21a7dcc8b Clean up completed multi curl instance to fix memory leak 2017-04-30 03:10:24 -07:00
Zach Borboa efbcc080bb Allow the disabling of automatic response decoding.
The following will disable their respective decoders:

  $curl->setDefaultDecoder(false);
  $curl->setJsonDecoder(false);
  $curl->setXmlDecoder(false);
2017-04-29 02:54:35 -07:00
Zach Borboa 5aed969628 Add additional wait when curl_multi_select fails to block 2017-04-27 00:15:48 -07:00
Zach Borboa 79f659d159 Fix probable bugs; Clean up style 2016-12-28 19:19:23 -08:00
Zach Borboa 7dc6eba0af Process multicurl requests in ascending numerical order.
Previously, multicurl requests were added to the end and removed from the end. Requests are now added to the end and
removed from the beginning. Using array_shift() will be slower than array_pop().

Before using "array_push()" + array_pop():
  1
  1 2
  1 2 3
  1 2 3 4
  1 2 3
  1 2
  1

After using "array_push()" + array_shift():
  1
  1 2
  1 2 3
  1 2 3 4
  2 3 4
  3 4
  4
2016-12-25 01:45:16 -05:00
Zach Borboa 7b5dd71bd5 Implement MultiCurl::setCookies() 2016-12-23 00:20:51 -08:00
Zach Borboa de1869b3ee Return boolean when calling setCookieFile() and setCookieJar() 2016-12-15 03:53:47 -08:00
Zach Borboa 5cb8223c47 Fix #400: Use sequential ids to allow for ordered post processing 2016-10-14 19:50:57 -07:00
Zach Borboa 97b24c65fa Return curl instance when calling MultiCurl::addCurl() like other MultiCurl::add*() methods 2016-10-12 08:24:45 -07:00
Kai Hempel e087f51c61 Add a curl add method for direct handle attach 2016-10-11 17:13:32 +02:00
Zach Borboa ecdfa174cb Rename setURL to setUrl 2016-09-27 00:24:22 -07:00
Zach Borboa bfc868fab4 Remove foreach loops 2016-09-24 01:22:44 -07:00
Zach Borboa 36ad0e4ecf Implement setHeaders() 2016-09-24 01:15:27 -07:00
Zach Borboa 90b17385f6 Implement removeHeader(); unsetHeader now unsets existing header
removeHeader() removes an internal request header.
unsetHeader() now removes an extra header previously set using setHeader().
2016-09-24 00:09:55 -07:00
Zach Borboa f4fffbc486 Add ability to set the number of concurrent requests 2016-09-04 20:54:57 -07:00
Zach Borboa 35fbade352 Rename windowSize to concurrency 2016-09-04 20:50:01 -07:00
Zach Borboa e77f853ab6 Make windowSize private 2016-09-04 20:48:41 -07:00
Zach Borboa 67e7992386 Clean up 2016-09-04 01:45:03 -07:00
Zach Borboa c2d04221e7 Add MultiCurl::setPort() 2016-09-04 01:19:27 -07:00
Zach Borboa 35ac500e03 Improve cookie handling for multicurl requests.
Fix Curl::responseCookies set in headerCallback() being overwritten during multicurl request.
Use rfc cookie encoding when using MultiCurl::setCookie().
Make MultiCurl::responseCookies publicly accessible.
2016-09-04 01:12:06 -07:00
Zach Borboa 21134e119e Add MultiCurl::setOpts() 2016-09-04 00:07:31 -07:00
Zach Borboa 82b64c2290 Add MultiCurl::setConnectTimeout() 2016-09-03 23:19:42 -07:00
Zach Borboa c634e65a19 Add MultiCurl::setCookieString() 2016-09-03 23:18:22 -07:00
Zach Borboa 946f4a74a1 Fix undefined index when option not set for MultiCurl::getOpt() 2016-09-03 23:06:25 -07:00
Zach Borboa 3789e2077b Implement a more efficient handling of requests in parallel.
A window size is now used to set the maximum number of active requests at any given time. Each time a request is
completed, a new request is added from the queue until all requests are processed. The result is a more continuous
stream of requests rather than a burst of requests that may cause servers to quickly become overloaded.
2016-09-02 03:57:53 -07:00
Zach Borboa b907159c2f Move download complete handling to Curl::exec() 2016-09-02 01:30:16 -07:00
Zach Borboa e55c556601 Refactor for queuing 2016-09-02 01:09:23 -07:00
Zach Borboa 75a944dd90 Clean up 2016-09-02 00:43:41 -07:00
Zach Borboa 6e636f02c8 Add warning against using error code from curl_errno() for multi handles 2016-08-31 23:31:32 -07:00
Zach Borboa 1edc13b5eb Clean up docblocks 2016-08-29 23:05:01 -07:00
Zach Borboa 39c21041a5 Clean up per PSR2 2016-08-24 00:25:38 -07:00
Zach Borboa a2918325ae Fix "Too many open files" error when adding hundreds of downloads using MultiCurl:addDownload() 2016-08-15 23:41:46 -07:00
Zach Borboa 58a6568cab Return immediately when already multicurl has already started 2016-08-15 00:39:26 -07:00
Zach Borboa ea7e649308 Set content-length header when it can be determined 2016-08-11 20:47:47 -07:00
Gor Martsen 4f16a605aa Add Search request 2016-08-11 11:54:18 -04:00
Zach Borboa 8f2b878237 Clean up spacing 2016-08-10 02:46:38 -07:00
Zach Borboa 25d9304672 Add output parameter to MultiCurl::verbose 2016-07-04 11:34:52 -07:00