美文网首页
PHP中CURL指定IP

PHP中CURL指定IP

作者: imjcw | 来源:发表于2019-12-24 11:41 被阅读0次

前言

之前公司官方商城改版,给前台一些页面做了 Memcache 缓存。在这期间,经常涉及到一些页面的改动,商品页的描述也在不断更新,每次都需要开发人员到服务器上 reload Memcache,比较麻烦,不然只有三个小时后页面才会失效,然后重载。

故想做一个后台配置,给运营同事操作。当运营同事修改了商品描述后,只需重载一下,就可以及时的更新给用户。

想法

本来呢,我的想法很简单,就是在官网项目里添加一个接口,然后在运营中心那边调用这个接口就行,这样就可以使某个页面的缓存失效。

之后,华仔跟我说,可以看看 web14 (我司的一台服务器)上的配置,看完之后,发现他的想法很不错。具体是,给请求加个 header,然后直接访问页面,就不会走缓存,会执行程序并重载这个页面的缓存。

坑来了

然而当我想要开始动工的时候,发现了一个尴尬的问题。

我司的服务器有多台,同时 Memcache 缓存在每一台服务器上,那么 CURL 如何指定到各个 IP 呢。

Google 了一下,找到了解决方案。

解决

修改hosts

10.21.72.179 jcwblog.com

这个方式只能制定某一台服务器的 IP,当遇到多种情况时,就不行了。

使用CURLOPT_RESOLVE

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://jcwblog.com');
curl_setopt($ch, CURLOPT_RESOLVE, [
    "jcwblog.com:80:10.21.72.179"
]);

PHP 7.0.22 下可以正常运行,可是跑到 PHP 5.5.38 下就不行了。

使用CURLOPT_HTTPHEADER — 最终的实现方案

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://10.21.72.179');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Host:jcwblog.com'
]);

这样只需要更换 IP 就好。

总结

一开始还是蛮担心自己弄不出来的,没想到解决问题是这么的简单。

参考资料

理货宝 php curl 域名解析到指定IP

-- EOF --
本文转载自IMJCW
原文链接:PHP中CURL指定IP

相关文章

网友评论

      本文标题:PHP中CURL指定IP

      本文链接:https://www.haomeiwen.com/subject/pbxtnctx.html