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

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

那如果 php 没有后台运行的话是怎么做到自动更新数据的呢?我觉得网上的那些能自动更新数据的源码应该是没有使用系统的定时任务的,都是纯 php 实现的。
5413 次点击
所在节点    PHP
34 条回复
alect
2019-09-05 07:02:57 +08:00
crontab 啊。。定时执行:
* * * * * /usr/bin/php73 -f /home/cron.php &> /dev/null
alect
2019-09-05 07:04:12 +08:00
@alect #1 后面那句没看到。。你不去看怎么知道他更新了?你看了他不就能更新了?
zictos
2019-09-05 07:14:59 +08:00
@alect 也就是只能在用户访问网站的时候顺带更新吗?在 php 文件中加入一个条件判断,比如距离上次更新超过一定时间了就立刻更新。这样大多时候用户访问网站时是不会更新的,只有在超过一段时间没有更新,某个用户访问网站的时候 php 就会顺带执行更新,然后再退出。

不过网上的那些源码真的是这样实现的吗?感觉他们好像不是这么弄的
kopisee
2019-09-05 07:15:16 +08:00
像 Discuz! 是有人访问的时候把之前的定时任务执行,所以定时关帖这些功能实际关帖操作的时间跟设定的时间有差别。

也可以用 cron-job.org 这种网站定时访问从而触发执行。
icekingcy
2019-09-05 08:23:51 +08:00
你在说 CLI 模式吗?
jason56
2019-09-05 08:25:51 +08:00
swoole 了解下
xiaoriri666
2019-09-05 08:28:16 +08:00
计划任务了解一下 linux 的计划任务就可以定时实现更新数据
dyllen
2019-09-05 09:02:29 +08:00
有的网站,你访问他的时候,他会按照概率去触发定时任务,这就不需要做任何设置了。
xnode
2019-09-05 09:08:14 +08:00
有 好几种方法,
第一种 cli 常驻内存执行
第二种 定时任务 cli 访问
第三种 定时任务 访问 curl url
第四种 curl url 后 使用断开连接后 后台内存执行
tanszhe
2019-09-05 09:09:42 +08:00
while(true) {

}
zjsxwc
2019-09-05 09:11:02 +08:00
不用 crontab
就纯 php cli 呗

while(1) {
//do something
sleep(60);
}
explore365
2019-09-05 09:23:03 +08:00
cli
lllllliu
2019-09-05 09:25:19 +08:00
@alect 薛定谔的 PHP
lscho
2019-09-05 09:26:54 +08:00
2 楼是正解啊,一些简单的任务不需要定时任务或者常驻后台。。既然数据是给人看的,那自然会有用户去访问,触发 webhook,更新一下数据就行了。
liuxu
2019-09-05 09:29:02 +08:00
@lllllliu 别说 PHP,JAVA/PYTHON 也不行
misaka19000
2019-09-05 09:32:05 +08:00
PHP 是世界上最好的语言
robinchina
2019-09-05 09:33:04 +08:00
我用 VB 定时执行 PHP···············win 系统··
ben1024
2019-09-05 09:35:18 +08:00
其实还有个操作,访问时在调用定时任务
Hanada
2019-09-05 09:37:53 +08:00
随便找个在线云监控,定时访问某个页面出发不就好了么,例如阿里云监控最低能以每分钟的频率来触发
Hanada
2019-09-05 09:38:18 +08:00
出发=触发

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

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

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

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

© 2021 V2EX