hirak / co-httpclient
httpclient by coroutines
dev-master
2014-09-18 14:15 UTC
Requires
- php: >=5.5
- spindle/httpclient: dev-master
Requires (Dev)
- apigen/apigen: v2.8.0
- dg/texy: <v2.5
- nette/nette: <2.2
- pdepend/pdepend: *
- phpunit/phpunit: *
This package is auto-updated.
Last update: 2024-12-04 15:02:54 UTC
README
yield(generator)でcurl_multi
をうまいこと書けるようにした関数のサンプル実装。
まだ結構バグバグなので、本番利用は危険です。
install
requirement:
- php >= 5.5
- ext-curl
$ composer require hirak/co-httpclient
使い方
<?php require 'vendor/autoload.php'; use Spindle\HttpClient; /** * JSONを返すWebAPIをGETメソッドで叩く関数。 * * - 待ちが発生するところにyieldキーワードを埋め込む。 * - returnの代わりにyieldキーワードを使う。 * - 例外は通常通り使用可能。 */ function getWebapiAsync($url) { $req = new HttpClient\Request($url); /** @type HttpClient\Response */ $res = (yield $req); if (($status = $res->getStatusCode()) >= 400) { throw new \RuntimeException($url, $status); } yield json_decode($res->getBody()); } //試しにpackagist.orgのjsonを取ってきてパースしてみる // json_decodeなどはなるべくWebAPIの待ち時間中に処理されます。 list($jpmirror, $origin) = co( getWebapiAsync('http://composer-proxy.jp/proxy/packagist/packages.json'), getWebapiAsync('https://packagist.org/packages.json') ); var_dump($jpmirror, $origin);
license
CC0-1.0 (Public Domain)