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

2016-09-18 12:15:25 +08:00
 wslsq
我有个项目需要每十秒爬取一个内容,不能手动刷新, php 好像没有定时功能的吧!?

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

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

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

你的朋友也没错,长链接也行。就是“ keep-alive ”啦,但是这个复杂点,没有必要。优点是速度快一些。
jerryjee
2016-09-18 15:06:03 +08:00
crontab 定期执行 PHP 脚本最简单
bombless
2016-09-18 15:10:34 +08:00
也不一定 crontab ,你就 nohup 让一个 PHP 脚本一直跑就好,每次 sleep 十秒
wslsq
2016-09-18 17:30:07 +08:00
@bombless
@jerryjee
@initpub
@ic2y
@nigelvon
谢谢大家,定时我懂得,只是希望有长链接之类更优方法。谢谢了。
initpub
2016-09-18 17:49:12 +08:00
@wslsq 我晕,你对时间的要求是“每十秒爬取一个内容”——根本不需要“更优方法”哦。
dawniii
2016-09-18 22:34:55 +08:00
不清楚具体需求是啥样。
我理解为 你有一个页面 页面的某些内容需要每十秒 从别的地方抓过来?
方案 1 : js 定时 ajax 去请求你的 php 程序拿数据就 OK 了
方案 2 : php 建立 websocket server 。浏览器建立长连接, js 定时发请求拿数据。
如果你的需求只是定时抓内容, php 脚本直接循环 sleep(10)就 OK 了
wslsq
2016-09-19 00:15:00 +08:00
@dawniii 感谢~
可能是我说的不明白~
自动刷新的问题已经解决了
主要是想用长连接爬取,因为长链接不会产生多次请求。多次请求怕会被封。
zktz
2016-09-20 00:13:51 +08:00
长连接不是你说的这个层面的事吧。你每隔 10 秒取一次数据,你对目标每隔 10 秒重新读取一次,对方就能记录一次,该封一样封。
wslsq
2016-09-20 11:19:26 +08:00
@zktz 谢谢。我的确对长链接不懂。

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

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

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

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

© 2021 V2EX