半吊子码农奇葩需求一个,大神各路来助!

2015-05-03 20:58:11 +08:00
 YAFEIML
需求如此
http://www.a.com/xq.php?src=http://www.b.com/Uploads/123456.jpg

首次访问该网址自动将b的123456.jpg保存到a本地缓存目录,再次访问该链接读取a缓存目录同名文件。。。

效率高,容错性强,微信活动把服务器拖爆了,转移到大带宽主机都做不到,只能先这样把文件部分分流出去。

补充下:是否可以在a建立列表存储已经缓存的文件列表,b实在是。。。
2646 次点击
所在节点    问与答
12 条回复
myleon
2015-05-03 21:04:17 +08:00
<?php
file_put_contents(str_replace('/','',$_GET['src']),$_GET['src']);//一句话解决
qiayue
2015-05-03 21:09:57 +08:00
最简单的方式是直接用七牛,配置上一键加速网站
然后图片等静态资源直接使用七牛的地址,他会走自动从源站抓取

给你举个例子
http://7xit0r.com1.z0.glb.clouddn.com/static/ariel/042803/css/style.css
实际我服务器地址是
http://app.wukeji.com/static/ariel/042803/css/style.css
myleon
2015-05-03 21:10:34 +08:00
额 没看具体需求
YAFEIML
2015-05-03 21:13:23 +08:00
@qiayue 用的是discuz,而且是插件,不好配置啊。
elvba
2015-05-03 21:21:20 +08:00
file_exists ?
检查这个文件存在不存在,存在就读,不存在就保存这样?
alex321
2015-05-03 21:26:16 +08:00
1、web server 直接 302 到 b;
2、xq.php 首先检查请求文件是否存在于 a 下,如有,直接 302 过去;如没有,远程读取并本地缓存到 a,然后 302 过去;
3、修改代码,直接请求 b。。
YAFEIML
2015-05-03 21:31:54 +08:00
@alex321 厚脸求代码!
bystand3r
2015-05-03 21:34:16 +08:00
微信活动如果突发很高的话弄个CDN吧,什么腾讯阿里的都行,也不贵
YAFEIML
2015-05-03 21:35:36 +08:00
@bystand3r 主要是用的discuz插件,不支持
bystand3r
2015-05-03 22:05:06 +08:00
@YAFEIML CDN跟程序没关啊,你需要的只是把解析改成CNAME,然后配置一个需要加速的目录而已。我们之前也是做活动,带宽把服务器拖挂了,之后页面加速,资源CDN,活动妥妥的。
YAFEIML
2015-05-03 22:08:46 +08:00
@bystand3r 好的明天试一下
elvba
2015-05-03 23:35:54 +08:00
- file_exists。
检查文件存不存在。

- file_get_contents + file_put_contents
保存图片,拿楼主头像举例,可以这么写
file_put_contents('./a.png', file_get_contents( 'https://cdn.v2ex.co/gravatar/30d41ecc5ecf0db83f3dceb26248e6cf?s=48&d=retro' ) );

- 剩下的就是 if 、else 判断了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/188175

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX