rfc:curl_http2_push

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
rfc:curl_http2_push [2015/11/18 22:14] daveyrfc:curl_http2_push [2015/12/01 20:38] davey
Line 3: Line 3:
   * Date: 2015-10-01   * Date: 2015-10-01
   * Author: Davey Shafik, davey@php.net   * Author: Davey Shafik, davey@php.net
-  * Status: Draft+  * Status: Under Discussion
   * First Published at: https://wiki.php.net/rfc/curl_http2_push   * First Published at: https://wiki.php.net/rfc/curl_http2_push
  
Line 12: Line 12:
 Server push allows the server to push additional resources relevant to the requested resource directly to the client proactively. Server push allows the server to push additional resources relevant to the requested resource directly to the client proactively.
  
-Server push is available in libcurl since 7.44.0.+Server push is available in libcurl since 7.44.0, but broken till the as-yet-unreleased 7.46.0 (See: [[https://github.com/bagder/curl/issues/529|this]] and [[https://github.com/bagder/curl/issues/530|this]] github issues for details).
  
 ===== Libcurl Implementation ===== ===== Libcurl Implementation =====
Line 30: Line 30:
 $transfers = 1; $transfers = 1;
  
-$callback = function($parent_ch, $pushed_ch, int $num_headers, array $headers) use (&$transfers) {+$callback = function($parent_ch, $pushed_ch, array $headers) use (&$transfers) {
  $transfers++; // increment to keep track of the number of concurrent requests  $transfers++; // increment to keep track of the number of concurrent requests
  return CURL_PUSH_OK;  return CURL_PUSH_OK;
Line 79: Line 79:
 We do not support ''CURLMOPT_PUSHDATA''. Instead, the user can use closures and ''use'' with references to replicate this behavior. We do not support ''CURLMOPT_PUSHDATA''. Instead, the user can use closures and ''use'' with references to replicate this behavior.
  
-libcurl exposes the push headers with two functions functions ''curl_pushheader_bynum()'' and ''curl_pushheader_byname()''. We can use ''curl_pushheader_bynum()'' to create an array of header lines. These would then be parsed in user land (as with regular request headers)+libcurl exposes the push headers with two functions functions ''curl_pushheader_bynum()'' and ''curl_pushheader_byname()''. We can use ''curl_pushheader_bynum()'' to create an array of header lines. These would then be parsed in user land (as with regular request headers).
  
 ===== Backward Incompatible Changes ===== ===== Backward Incompatible Changes =====
Line 130: Line 130:
 ===== Patches and Tests ===== ===== Patches and Tests =====
  
-(rough) Working patch can be found [[https://github.com/dshafik/php-src/compare/curl-http2-push|here]]+  - Working patch can be found [[https://github.com/dshafik/php-src/compare/curl-http2-push|here]] 
 +  - Docker container for easy testing can be found [[http://github.com/dshafik/php-http2-push-example|here]]
  
 ===== Implementation ===== ===== Implementation =====
rfc/curl_http2_push.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1