Php 使用代理的Guzzle 参考资料:

Php 使用代理的Guzzle 参考资料:,php,proxy,guzzle6,Php,Proxy,Guzzle6,环境: 我正在尝试将代理服务器用于异步Guzzle调用 我发现,当我在创建客户机时设置代理时,它是有效的 e、 g 但是,当创建没有选项的客户端时。。然后根据请求设置代理,根本不使用代理,guzzle直接从客户端机器连接到服务器机器。通过点击并检查httpbin返回的来源来确认这一点 我需要在每个请求上设置代理的能力 以下是相关代码: $client = new Client(); $request = new Request( 'GET',

环境: 我正在尝试将代理服务器用于异步Guzzle调用

我发现,当我在创建客户机时设置代理时,它是有效的

e、 g

但是,当创建没有选项的客户端时。。然后根据请求设置代理,根本不使用代理,guzzle直接从客户端机器连接到服务器机器。通过点击并检查httpbin返回的来源来确认这一点

我需要在每个请求上设置代理的能力

以下是相关代码:

$client = new Client();

$request = new Request(
                       'GET', 
                       'http://httpbin.org/ip',
                       ['proxy' => 'tcp://64.140.159.209:80']
                      );

$client->sendAsync($request)
                ->then( 
                        ...closure here 
                        // process here 
);

希望这对某人有帮助

该文档仅列出从客户端创建新请求

这意味着我理解错了用法。我直接创建了新的请求,并传递了第三个参数和代理信息,希望在单个客户机中每个请求都能更改代理信息。看起来代理是基于每个客户端设置的,即使您正在进行异步调用

因此,我必须修改我的应用程序,以便在每个异步请求中使用新的客户机

new Client(['proxy' => 'tcp://64.140.159.209:80'])
$client = new Client();

$request = new Request(
                       'GET', 
                       'http://httpbin.org/ip',
                       ['proxy' => 'tcp://64.140.159.209:80']
                      );

$client->sendAsync($request)
                ->then( 
                        ...closure here 
                        // process here 
);