Example #1
0
 /**
  * add new task and return a promise
  *
  * @param Task $task
  * @param null $task_name
  * @return \React\Promise\PromiseInterface
  */
 public function attach(Task $task, $task_name = null)
 {
     if (is_null($task_name)) {
         $task_name = count($this->tasks);
     }
     $this->tasks[$task_name] = $task;
     curl_multi_add_handle($this->curl, $task->getCurl());
     $deferred = new Deferred();
     $this->deferred[$task_name] = $deferred;
     return $deferred->promise();
 }
<?php

/**
 * Created by PhpStorm.
 * User: Jenner
 * Date: 2015/9/24
 * Time: 16:09
 */
date_default_timezone_set("PRC");
require dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
$timer = new \Jenner\Timer(\Jenner\Timer::UNIT_KB);
$timer->mark("start");
$async = new \Jenner\Http\Async();
for ($i = 0; $i < 20; $i++) {
    $task = \Jenner\Http\Task::createGet("http://www.baidu.com");
    $async->attach($task, "baidu" . $i);
    $task2 = \Jenner\Http\Task::createGet("http://www.sina.com");
    $async->attach($task2, "sina" . $i);
    $task3 = \Jenner\Http\Task::createGet("http://www.qq.com");
    $async->attach($task3, "qq" . $i);
}
$result = $async->execute();
$timer->mark("end");
$timer->printDiffReport();
Example #3
0
<?php

/**
 * Created by PhpStorm.
 * User: Jenner
 * Date: 2015/11/2
 * Time: 10:57
 */
date_default_timezone_set("PRC");
require dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
$async = new \Jenner\Http\Async();
$task = \Jenner\Http\Task::createGet("http://www.baidu.com");
$promise = $async->attach($task, "baidu");
$promise->then(function ($data) {
    echo 'success:' . var_export($data, true) . PHP_EOL;
}, function ($data) {
    echo 'error:' . var_export($data, true) . PHP_EOL;
});
$async->execute();