V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wslsq
V2EX  ›  PHP

请教大家关于 php 爬取内容的问题~

  •  
  •   wslsq · 2016-09-18 12:15:25 +08:00 · 2209 次点击
    这是一个创建于 2987 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我有个项目需要每十秒爬取一个内容,不能手动刷新, php 好像没有定时功能的吧!?

    我朋友说用长链接可以,然后我去了解了一下长链接。

    看了一下,长链接好像是用来搞通讯的吧。。长链接爬取可以吗?

    还请各位大神指点一二,谢谢~
    11 条回复    2016-09-20 11:19:26 +08:00
    nigelvon
        1
    nigelvon  
       2016-09-18 12:18:37 +08:00
    定时? crontab 或者 sleep+while(true) 都行
    ic2y
        2
    ic2y  
       2016-09-18 12:26:01 +08:00
    crontab 。设定为每 1 分钟启动一次脚本,然后, while 循环 6 次。每次开始爬的时候,记下 start_time ,爬完,记下 end_time,然后 sleep(10-(end_time - start_time))
    initpub
        3
    initpub  
       2016-09-18 13:00:12 +08:00
    楼上说得对: crontab + sleep 是可以搞定的,而且最简单。

    你的朋友也没错,长链接也行。就是“ keep-alive ”啦,但是这个复杂点,没有必要。优点是速度快一些。
    jerryjee
        4
    jerryjee  
       2016-09-18 15:06:03 +08:00
    crontab 定期执行 PHP 脚本最简单
    bombless
        5
    bombless  
       2016-09-18 15:10:34 +08:00
    也不一定 crontab ,你就 nohup 让一个 PHP 脚本一直跑就好,每次 sleep 十秒
    wslsq
        6
    wslsq  
    OP
       2016-09-18 17:30:07 +08:00
    @bombless
    @jerryjee
    @initpub
    @ic2y
    @nigelvon
    谢谢大家,定时我懂得,只是希望有长链接之类更优方法。谢谢了。
    initpub
        7
    initpub  
       2016-09-18 17:49:12 +08:00
    @wslsq 我晕,你对时间的要求是“每十秒爬取一个内容”——根本不需要“更优方法”哦。
    dawniii
        8
    dawniii  
       2016-09-18 22:34:55 +08:00
    不清楚具体需求是啥样。
    我理解为 你有一个页面 页面的某些内容需要每十秒 从别的地方抓过来?
    方案 1 : js 定时 ajax 去请求你的 php 程序拿数据就 OK 了
    方案 2 : php 建立 websocket server 。浏览器建立长连接, js 定时发请求拿数据。
    如果你的需求只是定时抓内容, php 脚本直接循环 sleep(10)就 OK 了
    wslsq
        9
    wslsq  
    OP
       2016-09-19 00:15:00 +08:00
    @dawniii 感谢~
    可能是我说的不明白~
    自动刷新的问题已经解决了
    主要是想用长连接爬取,因为长链接不会产生多次请求。多次请求怕会被封。
    zktz
        10
    zktz  
       2016-09-20 00:13:51 +08:00 via Android
    长连接不是你说的这个层面的事吧。你每隔 10 秒取一次数据,你对目标每隔 10 秒重新读取一次,对方就能记录一次,该封一样封。
    wslsq
        11
    wslsq  
    OP
       2016-09-20 11:19:26 +08:00
    @zktz 谢谢。我的确对长链接不懂。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1240 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:52 · PVG 01:52 · LAX 09:52 · JFK 12:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.