|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2018, PHP 7.1.23
+- CURL:
+ . Fixed bug #76480 (Use curl_multi_wait() so that timeouts are respected).
+ (Pierrick)
+
- Opcache:
. Fixed bug #76832 (ZendOPcache.MemoryBase periodically deleted by the OS).
(Anatol)
}
/* }}} */
+#if LIBCURL_VERSION_NUM < 0x071c00
static void _make_timeval_struct(struct timeval *to, double timeout) /* {{{ */
{
unsigned long conv;
to->tv_usec = conv % 1000000;
}
/* }}} */
+#endif
/* {{{ proto int curl_multi_select(resource mh[, double timeout])
Get all the sockets associated with the cURL extension, which can then be "selected" */
{
zval *z_mh;
php_curlm *mh;
+ double timeout = 1.0;
+#if LIBCURL_VERSION_NUM >= 0x071c00 /* Available since 7.28.0 */
+ int numfds = 0;
+#else
fd_set readfds;
fd_set writefds;
fd_set exceptfds;
int maxfd;
- double timeout = 1.0;
struct timeval to;
+#endif
CURLMcode error = CURLM_OK;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|d", &z_mh, &timeout) == FAILURE) {
RETURN_FALSE;
}
+#if LIBCURL_VERSION_NUM >= 0x071c00 /* Available since 7.28.0 */
+ error = curl_multi_wait(mh->multi, NULL, 0, (unsigned long) timeout * 1000.0, &numfds);
+ if (CURLM_OK != error) {
+ SAVE_CURLM_ERROR(mh, error);
+ RETURN_LONG(-1);
+ }
+
+ RETURN_LONG(numfds);
+#else
_make_timeval_struct(&to, timeout);
FD_ZERO(&readfds);
RETURN_LONG(-1);
}
RETURN_LONG(select(maxfd + 1, &readfds, &writefds, &exceptfds, &to));
+#endif
}
/* }}} */