1
alect 2019-09-05 07:02:57 +08:00
crontab 啊。。定时执行:
* * * * * /usr/bin/php73 -f /home/cron.php &> /dev/null |
3
zictos OP @alect 也就是只能在用户访问网站的时候顺带更新吗?在 php 文件中加入一个条件判断,比如距离上次更新超过一定时间了就立刻更新。这样大多时候用户访问网站时是不会更新的,只有在超过一段时间没有更新,某个用户访问网站的时候 php 就会顺带执行更新,然后再退出。
不过网上的那些源码真的是这样实现的吗?感觉他们好像不是这么弄的 |
4
kopisee 2019-09-05 07:15:16 +08:00 via Android
|
5
icekingcy 2019-09-05 08:23:51 +08:00 via iPhone
你在说 CLI 模式吗?
|
6
jason56 2019-09-05 08:25:51 +08:00
swoole 了解下
|
7
xiaoriri666 2019-09-05 08:28:16 +08:00
计划任务了解一下 linux 的计划任务就可以定时实现更新数据
|
8
dyllen 2019-09-05 09:02:29 +08:00
有的网站,你访问他的时候,他会按照概率去触发定时任务,这就不需要做任何设置了。
|
9
xnode 2019-09-05 09:08:14 +08:00
有 好几种方法,
第一种 cli 常驻内存执行 第二种 定时任务 cli 访问 第三种 定时任务 访问 curl url 第四种 curl url 后 使用断开连接后 后台内存执行 |
10
tanszhe 2019-09-05 09:09:42 +08:00
while(true) {
} |
11
zjsxwc 2019-09-05 09:11:02 +08:00
不用 crontab
就纯 php cli 呗 while(1) { //do something sleep(60); } |
12
explore365 2019-09-05 09:23:03 +08:00
cli
|
14
lscho 2019-09-05 09:26:54 +08:00
2 楼是正解啊,一些简单的任务不需要定时任务或者常驻后台。。既然数据是给人看的,那自然会有用户去访问,触发 webhook,更新一下数据就行了。
|
16
misaka19000 2019-09-05 09:32:05 +08:00
PHP 是世界上最好的语言
|
17
robinchina 2019-09-05 09:33:04 +08:00
我用 VB 定时执行 PHP···············win 系统··
|
18
ben1024 2019-09-05 09:35:18 +08:00
其实还有个操作,访问时在调用定时任务
|
19
Hanada 2019-09-05 09:37:53 +08:00 via iPad
随便找个在线云监控,定时访问某个页面出发不就好了么,例如阿里云监控最低能以每分钟的频率来触发
|
20
Hanada 2019-09-05 09:38:18 +08:00 via iPad
出发=触发
|
21
newtype0092 2019-09-05 10:10:00 +08:00
我不要你觉得,我要我觉得,我觉得他们就是用 crontab 了。
|
22
alexmy 2019-09-05 10:24:56 +08:00
配合 crontab 刷数据,做统计多好。
|
23
linxl 2019-09-05 10:28:10 +08:00
没人访问不更新也没有问题啊...
既然都没人访问了, 实际上定时任务没执行你也不知道啊 |
24
linxb 2019-09-05 10:31:24 +08:00
上 swoole,用毫秒定时器定时更新
|
25
tongz 2019-09-05 11:12:33 +08:00
程序在客户机安装的时候 shell_exec 创建一个 crontab 任务
|
26
zyy314680012 2019-09-05 11:46:14 +08:00 via Android
windows 计划任务 Linux crontab
|
27
zhengwenk 2019-09-05 12:13:00 +08:00
`我觉得网上的那些能自动更新数据的源码应该是没有使用系统的定时任务的,都是纯 php 实现的。`
为什么你会觉得都是 php 实现的,依据何在? |
31
liuxu 2019-09-06 17:05:15 +08:00
@gz911122 以标准 B/S 请求触发,php/java/python 作为 Server,这种非主动执是不能完成自动更新的。但如果没有这个限制,即使不依赖其他程序定时执行,只需要语言自己开发 daemon 进程程序也能完成
|
32
Mitt 2019-09-08 00:12:33 +08:00
首先 PHP 写个入口去执行 cron 操作,然后 cron 执行完后在避免 PHP 超时的情况下使用 curl 再访问一遍这个入口,相当于起线程一样的,访问完以后不等待结果直接取消,这样另一个线程也会继续执行 cron,这个线程就可以退出了,然后 cron 遍历可以设置 while 循环,在不触发 PHP 超时杀死的情况下可以一直跑,直到快超时了就用这个方法去开启新的线程来循环跑 cron, 在执行 cron 的时候可以定时写入文件时间或者其他方法来记录你这个 cron 还活着,然后用户访问网站的时候去检查一遍 cron 是否活着,死了就用上述方法去激活,这种方法虽然不稳定但是也确实符合你的要求,可以最低限度修改 PHP 配置就实现。
|
34
ETO 2019-09-09 10:37:56 +08:00
swoole 了解吧。
|