PHP中Curl如何使请求的域名被解析到指定IP上

{app.params.name}} {app.params.name}} {app.params.name}}

我们在测试的时候会遇到一个情况,就是在做上线前的接口测试的时候,想要模拟真实的环境,那么接口的域名地址是少不了的,这个情况下,我们又不想直接调用线上的数据,想通过域名跟IP的映射,调用另外一台机器上的代码【即将要上线的代码】。可以采用php中curl的参数配置来操作,具体如下:

这里的Curl使用的是ixudra/curl

简单的实例代码如下

$response = Curl::to($host)
->enableDebug('/usr/local/openresty/nginx/html/api.qeeniao.com/qeeniao/storage/logs/laravel-2017-11-03.log')
->withOption('RESOLVE',['xxx.xxxx.com:443:xxx.xxx.xxx.xxx'])
->withData($params)->get();

其实熟悉curl的话对这个就不陌生了

curl --resolve fdh5imgcdn.oz1997.com:443:58.216.109.182

如果不用ixudra/curl的话,可以参照下面的代码使用,效果其实是一样的

$resolve = array(sprintf(
    "%s:%d:%s", 
    $hostname,
    $port,
    $host_ip
));

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RESOLVE, $resolve);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($ch); 
curl_close($ch);

 


版权声明

durban 创作并维护的 Gowhich 博客采用 创作共用保留署名-非商业-禁止演绎4.0国际许可证。

本文首发于 Gowhich 博客( https://www.gowhich.com ),版权所有,侵权必究。

本文永久链接: https://www.gowhich.com/blog/808

comments powered by Disqus