不用数据库, PHP 每 10 分钟内生成一个恒定随机数,该怎样实现?

2021-08-23 10:19:23 +08:00
 kisshere

api 请求一个 php 单文件,该 php 单文件(不调用数据库)每 10 分钟生成一个定值随机数,比如:

8:00~8:10 请求该 php,只输出定值 23

8:10~8:20 请求该 php,只输出定值 189

8:20~8:30 请求该 php,只输出定值 3

8:30~8:40 请求该 php,只输出定值 67

......

这个该怎样实现?

5466 次点击
所在节点    程序员
61 条回复
luxcen
2021-08-23 10:21:22 +08:00
if elseif else
Switch ....
dallaslu
2021-08-23 10:22:01 +08:00
8:00~8:10 请求该 php:base_convert(md5('8:00'), 16, 10) % MAX_VALUE

8:10~8:20 请求该 php:base_convert(md5('8:10'), 16, 10) % MAX_VALUE
yousabuk
2021-08-23 10:22:35 +08:00
说的再详细写才好看
justrand
2021-08-23 10:27:32 +08:00
定值随机数 怎么理解?
zoharSoul
2021-08-23 10:28:49 +08:00
定值还叫随机数?

五彩斑斓的黑是吧
8bit
2021-08-23 10:30:41 +08:00
估计是不重复的随机数吧
gfreezy
2021-08-23 10:33:37 +08:00
把 10 分钟当作随机数的种子,同一个 10 分钟内返回的都是同一个随机数
hauzi
2021-08-23 10:34:22 +08:00
直接用 cache 吧,10 分钟过期重新生成
dinghmcn
2021-08-23 10:34:47 +08:00
要第一次随机,其后直接使用该值?
每次先检查当前时段随机值是否存在,不存在就取一个随机值并保存起来
oott123
2021-08-23 10:37:37 +08:00
<?php
define('MY_SUPER_SECRET_CONSTANT', 123456789);
srand(intval(time() / 600) + MY_SUPER_SECRET_CONSTANT);
echo rand(0, 500);
oott123
2021-08-23 10:38:07 +08:00
以及我给的方法非常不安全(意味着该随机数可推测)。
keepeye
2021-08-23 10:40:12 +08:00
楼主的意思是,10 分钟内只生成一次随机数,多次请求返回缓存值。所以用缓存就行了啊,往 /tmp/目录下写个缓存文件,把时间、数值记录进去,每次读取,判断时间决定要不要重新生成
boboliu
2021-08-23 10:40:42 +08:00
你是不是在找:totp
kisshere
2021-08-23 10:41:07 +08:00
@justrand
@zoharSoul 是根据时间段返回不同的随机数,时间段的最小区间长度是 10 分钟,该区间内,输出恒定数
kisshere
2021-08-23 10:41:47 +08:00
@keepeye 不往硬盘写文件,只用纯算法实现
JKeita
2021-08-23 10:46:41 +08:00
$t = time();
$t = $t - $t%600;
srand($t);
$v = rand();
echo $v;
keepeye
2021-08-23 10:48:31 +08:00
@kisshere 那你可以用 mt_srand 播种,种子就是时间拼成的整数
pengtdyd
2021-08-23 10:49:06 +08:00
大胆猜测一下,这个问题的背后必然有一个伞兵的产品经理
hxnets
2021-08-23 10:50:18 +08:00
恒定随机数???
finull
2021-08-23 10:51:47 +08:00
@kisshere @boboliu 提到的 TOTP 值得考虑

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

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

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

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

© 2021 V2EX