PHP Guzzle HTTP客户端

2019/01/16
异步请求值得拥有
php不管干什么一切都以composer为主吧。
composer psr-4

表单上传

<?php
use GuzzleHttp\Client;
use GuzzleHttp\Promise;

$client = new Client();

$client->request('POST', 'http://foo.com/upload_file', [
    [
        'name' => 'image',
        'contents' => fopen('/home/runner/demo.png', 'r'),
        'filename' => 'avatar.png',
    ],
]);


<?php

use GuzzleHttp\Client;

$client = new Client;

$client->request('POST', 'http://foo.com/upload_file', [
    [
        'name' => 'image',
        'contents' => fopen($_FILES['image']['tmp_name'], 'r'),
        'filename' => 'avatar.png',
        'headers' => [
            'content-type' => $_FILES['image']['type'],
        ]
    ],
]);

在这里, 必须设置 content-type, 否则再次上传的文件, 将无法获取到 mime type

默认的 mime type 是从文件扩展名从获取而来的. 而当使用从 $_FILES 拿到的文件名中并不包含扩展名


并发异步请求
// 初始化每一个非阻塞请求
$promises = [
    'one' => $client->getAsync('http://www.phptest.me/appserver/one.php'),
    'two'   => $client->getAsync('http://www.phptest.me/appserver/two.php')
];

// 等待请求完成
$results = Promise\unwrap($promises);
$results = Promise\settle($promises)->wait();

// 通过键名接收每一个结果
// function.
echo $results['one']['value']->getBody();
echo $results['two']['value']->getBody(); 

	

个人随笔

安静的等待,你若盛开,蝴蝶自来

承接高质量 网站开发 app开发 如有需要请点击About联系

作者 @承鹏辉