V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
YAFEIML
V2EX  ›  问与答

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

  •  
  •   YAFEIML · 2015-05-03 20:58:11 +08:00 · 2644 次点击
    这是一个创建于 3280 天前的主题,其中的信息可能已经有所发展或是发生改变。
    需求如此
    http://www.a.com/xq.php?src=http://www.b.com/Uploads/123456.jpg

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

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

    补充下:是否可以在a建立列表存储已经缓存的文件列表,b实在是。。。
    第 1 条附言  ·  2015-05-03 22:32:07 +08:00
    还是求代码吧,CDN需要各种审核,而且是做了cname后审核,审核时间暂时顶不住。
    第 2 条附言  ·  2015-05-04 06:31:52 +08:00
    补充:src=http://www.b.com/Uploads/123456.jpg(src后面这些是discuz插件生成,也就是说所有的过程都有xq.php完成)
    12 条回复    2015-05-03 23:35:54 +08:00
    myleon
        1
    myleon  
       2015-05-03 21:04:17 +08:00
    <?php
    file_put_contents(str_replace('/','',$_GET['src']),$_GET['src']);//一句话解决
    qiayue
        2
    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
        3
    myleon  
       2015-05-03 21:10:34 +08:00
    额 没看具体需求
    YAFEIML
        4
    YAFEIML  
    OP
       2015-05-03 21:13:23 +08:00
    @qiayue 用的是discuz,而且是插件,不好配置啊。
    elvba
        5
    elvba  
       2015-05-03 21:21:20 +08:00
    file_exists ?
    检查这个文件存在不存在,存在就读,不存在就保存这样?
    alex321
        6
    alex321  
       2015-05-03 21:26:16 +08:00
    1、web server 直接 302 到 b;
    2、xq.php 首先检查请求文件是否存在于 a 下,如有,直接 302 过去;如没有,远程读取并本地缓存到 a,然后 302 过去;
    3、修改代码,直接请求 b。。
    YAFEIML
        7
    YAFEIML  
    OP
       2015-05-03 21:31:54 +08:00
    @alex321 厚脸求代码!
    bystand3r
        8
    bystand3r  
       2015-05-03 21:34:16 +08:00
    微信活动如果突发很高的话弄个CDN吧,什么腾讯阿里的都行,也不贵
    YAFEIML
        9
    YAFEIML  
    OP
       2015-05-03 21:35:36 +08:00
    @bystand3r 主要是用的discuz插件,不支持
    bystand3r
        10
    bystand3r  
       2015-05-03 22:05:06 +08:00
    @YAFEIML CDN跟程序没关啊,你需要的只是把解析改成CNAME,然后配置一个需要加速的目录而已。我们之前也是做活动,带宽把服务器拖挂了,之后页面加速,资源CDN,活动妥妥的。
    YAFEIML
        11
    YAFEIML  
    OP
       2015-05-03 22:08:46 +08:00
    @bystand3r 好的明天试一下
    elvba
        12
    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 判断了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5363 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:11 · PVG 17:11 · LAX 02:11 · JFK 05:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.