用 PHP 实现发送 GET 请求无需等待和接收返回结果,最省流量、最省内存、速度最快的方法是什么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jookr
V2EX    PHP

用 PHP 实现发送 GET 请求无需等待和接收返回结果,最省流量、最省内存、速度最快的方法是什么?

  •  
  •   jookr 2016 年 7 月 13 日 4488 次点击
    这是一个创建于 3521 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有个项目,第一次访问会自动生成缓存页面,因为第一次访问时无缓存读取所以耗时长,所以希望自己来触发所有页面的第一次访问。

    SO ,用 PHP 实现发送 GET 请求无需等待和接收返回结果,最省流量、最省内存、速度最快的方法是什么? 除了 curl 、 file_get_contents 还有其他更好的方法吗?

    17 条回复    2016-07-13 16:22:17 +08:00
    cdwyd
        1
    cdwyd  
       2016 年 7 月 13 日 via Android   1
    主动生成不是更好
    skydiver
        2
    skydiver  
       2016 年 7 月 13 日 via Android   1
    自己 fsockopen 然后读写
    explon
        3
    explon  
       2016 年 7 月 13 日   1
    curl 或 file_get_contents 访问,设置脚本运行超时为 1 秒
    jookr
        4
    jookr  
    OP
       2016 年 7 月 13 日
    @explon 这方法 6
    changshu
        5
    changshu  
       2016 年 7 月 13 日   1
    不用 GET , 用 HEAD
    qiayue
        6
    qiayue  
    PRO
       2016 年 7 月 13 日   1
    用 fsockopen , fputs 的下一句 fclose
    qiayue
        7
    qiayue  
    PRO
       2016 年 7 月 13 日   1
    @qiayue 还要 Connection: Close 不然请求会阻塞
    jookr
        8
    jookr  
    OP
       2016 年 7 月 13 日
    @changshu
    求赐教
    HEAD 方法具体用到哪几个函数?
    谢谢
    iyaozhen
        9
    iyaozhen  
       2016 年 7 月 13 日 via Android   1
    你这核心还是要发一个异步请求,可以看看: http://www.laruence.com/2008/04/14/318.html

    或者配置个 crontab ,定时请求。
    changshu
        10
    changshu  
       2016 年 7 月 13 日   1
    @jookr 你上面举的都可以, curl 系列可以 curl_setopt 一个 CURLOPT_NOBODY 的参数, file_get_contents 可以传一个 stream_context_create 创建的 method 为 HEAD 的 context 进去
    eoo
        11
    eoo  
       2016 年 7 月 13 日   1
    直接设置毫秒请求即可 楼上那些 呵呵。。。。

    curl_setopt($ch, CURLOPT_NOSIGNAL, true); //注意,毫秒超时一定要设置这个
    curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200); //超时时间 200 毫秒
    Dowding
        12
    Dowding  
       2016 年 7 月 13 日   1
    shyling
        13
    shyling  
       2016 年 7 月 13 日   1
    用 HEAD 不行嘛
    qiayue
        14
    qiayue  
    PRO
       2016 年 7 月 13 日
    @eoo 表示不接受你的呵呵
    eoo
        15
    eoo  
       2016 年 7 月 13 日 via Android
    @qiayue 哦(-ω-`)
    veking
        16
    veking  
       2016 年 7 月 13 日   1
    HEAD 官方定义
    HEAD 方法跟 GET 方法相同,只不过服务器响应时不会返回消息体。一个 HEAD 请求的响应中, HTTP 头中包含的元信息应该和一个 GET 请求的响应消息相同。这种方法可以用来获取请求中隐含的元信息,而不用传输实体本身。也经常用来测试超链接的有效性、可用性和最近的修改。
    一个 HEAD 请求的响应可被缓存,也就是说,响应中的信息可能用来更新之前缓存的实体。如果当前实体跟缓存实体的阈值不同(可通过 Content-Length 、 Content-MD5 、 ETag 或 Last-Modified 的变化来表明),那么这个缓存就被视为过期了。

    HEAD 请求常常被忽略,但是能提供很多有用的信息,特别是在有限的速度和带宽下。主要有以下特点:
    1 、只请求资源的首部;
    2 、检查超链接的有效性;
    3 、检查网页是否被修改;
    4 、多用于自动搜索机器人获取网页的标志信息,获取 rss 种子信息,或者传递安全认证信息等
    C0VN
        17
    C0VN  
       2016 年 7 月 13 日
    需要服务端支持 HEAD 方法,和 PHP 没啥关系。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3162 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 13:53 PVG 21:53 LAX 05:53 JFK 08:53
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86