use GuzzleHttp\Client; $client = new Client(); $res = $client->requestAsync($method,$url,$options)->wait(); 様々な記法が存在しているが概ね以下の様な形でまとまる。 request()による呼び出しは 内部で requestAsync()->wait() を呼び出す。 get post と言ったメソド名呼び出しは、動的にメソド名を第一引数に据えてrequest を呼び出す。 getAsync postAsync と言ったメソド名呼び出しは、動的にメソド名を第一引数に据えてrequest Asyncを呼び出す。 PSR7 によるリクエスト PSR7形式でのリクエストオブジェクトが存在する場合には sendメソドが利用できる。 use GuzzleHttp\Psr7\Request; $r
Oct 29, 2016 · server php PHPのHTTPクライアント(Guzzle)で非同期の並列リクエストを行う方法 Guzzleは内部ではcurlを使っており、便利なcurlを面倒な設定をせずに使えるというありがたいもの (なおcurlがなくても動くがその場合は非同期が使えないなど機能が制限されるらしい) 事前準備 動作環境は以下のとおり PHP 5.5.0以上 curl 7.19.4以上 (要openSSL/zlib) インストール composerでguzzlehttp/guzzleを入れる (guzzle/guzzleは古いバージョンなので注意) composerを使っているので、使う時は require 'vendor/autoload.php'; を忘れないこと php.iniの設定 allow_url_fopen = ON を設定しておく 使い方 複数のURLに
何度も調べてしまうのでメモ 0.5秒スリープさせるには usleep(500000); 1秒スリープさせるには usleep(1000000); と記述します。
guzzleのasyncによる非同期リクエストは並列処理になって処理順がバラバラになります。なってほしいです。 しかしどうも書いていると直列っぽく動作しているので、サンプルで確認。並列になっています。 <?php require 'vendor/autoload.php'; $client = new \GuzzleHttp\Client; $promises = []; for ($i = 0; $i < 5; $i++) { $promises[] = $client->requestAsync( 'GET', 'https://google.co.jp/', [ 'on_stats' => function ($stats) { echo $stats->getTransferTime() . "\n"; } ] )->then( function ($res) use($i) {
これによりインストールされるのは下記。 guzzlehttp/promises (v1.3.1) psr/http-message (1.0.1) guzzlehttp/psr7 (1.4.2) guzzlehttp/guzzle (6.3.0) 単一処理 実行例-1 <?php use \GuzzleHttp\Client; class Controller_Single extends Controller_Rest { protected $format = 'json'; public function action_index() { $client = new Client([ 'base_uri' => 'http://zipcloud.ibsnet.co.jp/api/', ]); $method = 'GET'; $uri = 'search?zipcode=131-00
公式ドキュメントに例もありますが、promiseの処理等部分的に散らばっているのでとりあえずPool(不特定のリクエスト数を処理する場合に使用)を使わない方法をまとめたメモ リトライ処理を入れていなかったのでこれで対応してみましたが、並列数をあげてもパフォーマンスが変わらなかったので調べたところ、同期処理になってしまいました。 requestAsyncはこのリトライ処理といっしょに使うことはできないようです。 requestAsyncのpiromiseを返すところで都度アクセスが発生していました。 use GuzzleHttp\Client; use GuzzleHttp\Handler\CurlHandler; use Psr\Http\Message\ResponseInterface; use GuzzleHttp\Exception\RequestException; use Gu
DockerのコンテナとしてPHP-FPMを起動している場合、"kill"コマンドで PHP-FPMをリロードしたいことがあると思います。 やり方は簡単で kill -USR2 プロセス番号(php-fpm: master process) でOKです。 実際に試してみます。 PHP-FPMのプロセスはこんな感じです。 # docker exec 77586670e25f ps aux root 86 0.0 1.2 298316 13192 ? Ss Jul10 0:06 php-fpm: master process (/etc/php-fpm.conf) apache 90 0.0 0.5 298316 5604 ? S Jul10 0:00 php-fpm: pool www apache 91 0.0 0.5 298316 5604 ? S Jul10 0:00 php-fpm:
問題 ソースからコンパイルしたphp-fpmは、そのままだと /etc/init.d/php-fpm restart など当然できないんだけど、再起動とかどうやってやったらよいの? 答え man php-fpm によると以下の通り。 PHP-FPM(8) Scripting Language PHP-FPM(8) NAME php-fpm - PHP FastCGI Process Manager 'PHP-FPM' SYNOPSIS php-fpm [options] ... SIGNAL Once started, php-fpm then responds to several POSIX signals: SIGINT,SIGTERM immediate termination SIGQUIT graceful stop SIGUSR1 re-open log file SIGUS
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く