php小白 求给个思路

基于thinkphp框架 做了一套程序
由于是体育类型的网站 需要抓取一些比分数据
由于比分到实时性 因为随时会更新 比如nba比分 很频繁
现在采用的办法是 客户端访问的时候 js形式加载了一个php文件 因为每次处理数据较多 而且太频繁很消耗资源 加载也很慢 有没有什么办法可以节约资源而且保证数据的实时性? 最重要的一点是假如某个时间段pv低或者没人访问 数据也就不更新了
有没有什么其他方法可以节约资源 且能保证数据的实时性?
有朋友推荐用workerman 由于不大了解这个框架 也不知道适不适合在这种场景里应用 求大神们给条思路

阅读 2.2k
5 个回答

定时任务

crontab 定时任务 ,1 分钟运行一次。
然后用代码判断,是否在比赛时间段,如果在就去抓取最新的数据,如果没不在,就放缓抓取。

无头浏览器

  • puppeteer

使用无头浏览器打开页面注入 Script 到页面,与自己的服务器建立 WebSocket 连接,然后监听页面比分位置的 DOM 变化,如果变化了就将最新的数据通过 WebSocket 发送给服务器,由服务器处理。

这样的好处就是不用刷新了,资源也省下了,就是开发难度稍微高一点儿。

新手上路,请多包涵

workerman/swoole/crontab
如果允许数据有一分钟延时,在linux用crontab做计划任务最简单
workerman/swoole有大量学习成本,但是会帮你打开一扇新世界的大门

上面很多人提议用crontab。 事实上, crontab与php结合, 那是行业中最脑残的合作体。
为了crontab, php要增加无数倍的代码来纠错。 弊大于利。

php采集一个网址其实压力并不大, 按10秒读一次, 一分钟才6次,

重点是要跳出thinkphp框架, 没有必要为了采集而跑一次thinkphp。 纯php代码即可。
然后用radis排排队。

楼主或许可以参考我以前搞得类似的文章,长链接监听后端的接口,后端推送数据就可以的。动态数据展示

workman,swoole,crontab,redis都可以,看你自己选择,用纯php运行不用框架会提高运行效率,这个也是纯php写的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题