前言
之前公司官方商城改版,给前台一些页面做了 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
就好。
总结
一开始还是蛮担心自己弄不出来的,没想到解决问题是这么的简单。
参考资料
-- EOF --
本文转载自IMJCW
原文链接:PHP中CURL指定IP
网友评论