纯 PHP 能自动访问 api 更新数据吗?

2019-09-05 06:49:51 +08:00
 zictos
见过很多网站源码,都有自动更新数据的功能。
但 php 正常情况下没人访问网站应该就不会运行,只有用户发送 http 请求的时候 php 才会执行,执行完了之后就马上退出了。

那如果 php 没有后台运行的话是怎么做到自动更新数据的呢?我觉得网上的那些能自动更新数据的源码应该是没有使用系统的定时任务的,都是纯 php 实现的。
5424 次点击
所在节点    PHP
34 条回复
newtype0092
2019-09-05 10:10:00 +08:00
我不要你觉得,我要我觉得,我觉得他们就是用 crontab 了。
alexmy
2019-09-05 10:24:56 +08:00
配合 crontab 刷数据,做统计多好。
linxl
2019-09-05 10:28:10 +08:00
没人访问不更新也没有问题啊...
既然都没人访问了, 实际上定时任务没执行你也不知道啊
linxb
2019-09-05 10:31:24 +08:00
上 swoole,用毫秒定时器定时更新
tongz
2019-09-05 11:12:33 +08:00
程序在客户机安装的时候 shell_exec 创建一个 crontab 任务
zyy314680012
2019-09-05 11:46:14 +08:00
windows 计划任务 Linux crontab
zhengwenk
2019-09-05 12:13:00 +08:00
`我觉得网上的那些能自动更新数据的源码应该是没有使用系统的定时任务的,都是纯 php 实现的。`

为什么你会觉得都是 php 实现的,依据何在?
gz911122
2019-09-05 12:32:45 +08:00
@liuxu
java 怎么不行?
liuxu
2019-09-06 09:20:18 +08:00
@gz911122 你要说行那其实所有语言都能行
gz911122
2019-09-06 10:43:38 +08:00
@liuxu 不是,我没听明白你什么意思?
能正面说明下吗?
liuxu
2019-09-06 17:05:15 +08:00
@gz911122 以标准 B/S 请求触发,php/java/python 作为 Server,这种非主动执是不能完成自动更新的。但如果没有这个限制,即使不依赖其他程序定时执行,只需要语言自己开发 daemon 进程程序也能完成
Mitt
2019-09-08 00:12:33 +08:00
首先 PHP 写个入口去执行 cron 操作,然后 cron 执行完后在避免 PHP 超时的情况下使用 curl 再访问一遍这个入口,相当于起线程一样的,访问完以后不等待结果直接取消,这样另一个线程也会继续执行 cron,这个线程就可以退出了,然后 cron 遍历可以设置 while 循环,在不触发 PHP 超时杀死的情况下可以一直跑,直到快超时了就用这个方法去开启新的线程来循环跑 cron, 在执行 cron 的时候可以定时写入文件时间或者其他方法来记录你这个 cron 还活着,然后用户访问网站的时候去检查一遍 cron 是否活着,死了就用上述方法去激活,这种方法虽然不稳定但是也确实符合你的要求,可以最低限度修改 PHP 配置就实现。
ETO
2019-09-09 10:36:35 +08:00
@lllllliu 这跟 php 没什么关系,只是 linux 定时任务精度的问题吧?
ETO
2019-09-09 10:37:56 +08:00
swoole 了解吧。

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

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

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

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

© 2021 V2EX