- release 1.6.0b1
authorMichael Wallner <mike@php.net>
Wed, 5 Sep 2007 17:15:03 +0000 (17:15 +0000)
committerMichael Wallner <mike@php.net>
Wed, 5 Sep 2007 17:15:03 +0000 (17:15 +0000)
package.xml
package2.xml
scripts/bench_select_vs_event.php [new file with mode: 0644]

index bcfbc132f1238fc689327223ff5a905ed05e173a..cc517ed3be319209629ca9dbc96edca6296c5391 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE package SYSTEM "http://pear.php.net/dtd/package-1.0">
-<package version="1.0" packagerversion="1.4.11">
+<package version="1.0" packagerversion="1.6.1">
  <name>pecl_http</name>
  <summary>Extended HTTP Support</summary>
  <description>This HTTP extension aims to provide a convenient and powerful 
@@ -23,15 +23,14 @@ support. Parallel requests are available for PHP 5 and greater.
   </maintainer>
   </maintainers>
  <release>
-  <version>1.5.2</version>
-  <date>2007-02-25</date>
+  <version>1.6.0b1</version>
+  <date>2007-09-05</date>
   <license>BSD, revised</license>
-  <state>stable</state>
-  <notes>* Fixed bug #10151 (build fails dynamic linking on Mac OS X)
-* Allow setting the &quot;proxyhost&quot; request option to an empty string,
-  which lets curl ignore any environment settings
-* Allow unsetting request options by passing NULL:
-  $request-&gt;setOptions(array(&quot;option&quot; =&gt; NULL));
+  <state>beta</state>
+  <notes>+ Added &apos;retrycount&apos; and &apos;retrydelay&apos; request options
++ Added libevent support for libcurl (&gt;= 7.16.0):
+  o added --with-http-curl-libevent configure option
+  o added HttpRequestPool::enableEvents()
   </notes>
   <deps>
    <dep type="php" rel="ge" version="4.3"/>
index ef11c52d3ca95a664bcf411c763e467a84e00aa6..beb0db016f8947f6ca4682b8a0c58995eb5d43e0 100644 (file)
@@ -28,7 +28,7 @@ support. Parallel requests are available for PHP 5 and greater.
   <email>mike@php.net</email>
   <active>yes</active>
  </lead>
- <date>2007-06-12</date>
+ <date>2007-09-05</date>
  <version>
   <release>1.6.0b1</release>
   <api>1.6.0</api>
diff --git a/scripts/bench_select_vs_event.php b/scripts/bench_select_vs_event.php
new file mode 100644 (file)
index 0000000..589f31e
--- /dev/null
@@ -0,0 +1,72 @@
+<?php
+
+class pool extends HttpRequestPool {
+       private $url;
+       private $cnt;
+       
+       static function fetch($url, $n, $c, $e) {
+               $pool = new pool;
+               $pool->url = $url;
+               $pool->cnt = $n;
+               
+               $pool->enableEvents($e);
+               
+               for ($i = 0; $i < $c; ++$i) {
+                       $pool->push();
+               }
+               try {
+                       $pool->send();
+               } catch (Exception $ex) {
+                       echo $ex, "\n";
+               }
+       }
+       
+       function push() {
+               if ($this->cnt > 0) {
+                       request::init($this, $this->url)->id = $this->cnt--;
+               }
+       }
+}
+
+class request extends HttpRequest {
+       static $counter = 0;
+       
+       public $id;
+       private $pool;
+       
+       static function init(pool $pool, $url) {
+               $r = new request($url);
+               $r->pool = $pool;
+               $pool->attach($r);
+               return $r;
+       }
+       
+       function onFinish() {
+               ++self::$counter;
+               $this->pool->detach($this);
+               $this->pool->push();
+       }
+}
+
+function usage() {
+       global $argv;
+       fprintf(STDERR, "Usage: %s -u <URL> -n <requests> -c <concurrency> -e (use libevent)\n", $argv[0]);
+       fprintf(STDERR, "\nDefaults: -u http://localhost/ -n 1000 -c 10\n\n");
+       exit(-1);
+}
+
+isset($argv) or $argv = $_SERVER['argv'];
+defined('STDERR') or define('STDERR', fopen('php://stderr', 'w'));
+
+$opts = getopt("u:c:n:e");
+isset($opts["u"]) or $opts["u"] = "http://localhost/";
+isset($opts["c"]) or $opts["c"] = 10;
+isset($opts["n"]) or $opts["n"] = 1000;
+
+http_parse_message(http_head($opts["u"]))->responseCode == 200 or usage();
+
+$time = microtime(true);
+pool::fetch($opts["u"], $opts["n"], $opts["c"], isset($opts["e"]));
+printf("\n> %10.6fs\n", microtime(true)-$time);
+
+request::$counter == $opts["n"] or printf("\nOnly %d finished\n", request::$counter);