🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
通常我们进行 http 请求都是通过 curl 或者 file_get_contents,但是并发的性能都不好,Swoole 内置的 swoole_http_client(Http 异步客户端)没有并发限制,可在一个进程内同时并发上万请求。无论从功能、性能、稳定性上 swoole_http_client 都要更胜一筹。swoole_http_client 是由 C 语言实现的,解析 Http 协议的性能是非常高,内存占用也很少。 接下来我们来演示如何在 ThinkPHP5 中使用 swoole_http_client 来进行 http 请求 创建 ThinkPHP5 自定义命令行 1.创建命令行类 - 创建application/console/HttpClient.php文件 ~~~ <?php namespace app\Console; use think\console\Command; use think\console\Input; use think\console\Output; class HttpClient extends Command { // 命令行配置函数 protected function configure() { // setName 设置命令行名称 // setDescription 设置命令行描述 $this->setName('http:client')->setDescription('Start Http Client!'); } // 设置命令返回信息 protected function execute(Input $input, Output $output) { // 将域名解析为IP地址 \swoole_async_dns_lookup("freeapi.ipip.net", function ($domainName, $ip) { // 实例化 swoole_http_client $cli = new \swoole_http_client($ip, 80); // 设置 Http 请求头 $cli->setHeaders([ 'Host' => $domainName, "User-Agent" => 'Chrome/49.0.2587.3', 'Accept' => 'text/html,application/xhtml+xml,application/xml', 'Accept-Encoding' => 'gzip', ]); // 发起GET请求 $cli->get('/202.97.224.68', function ($cli) { // 统计返回内容长度 echo "Length: " . strlen($cli->body) . "\n"; // 显示返回内容 echo $cli->body; // 关闭请求 $cli->close(); }); }); $output->writeln("HttpClient: Start.\n"); } } ~~~ 2.修改配置文件 - 文件所在 application/command.php ~~~ <?php return [ 'app\console\HttpClient', ]; ~~~ 这时直接在命令行输入如下命令就可以显示 http 客户端返回的内容 1 $ > `php think http:client` 如果HttpClient: Start.在返回的 json 数据前显示,说明异步客户端正常运作。