我已经被困在这几天了,而且我真的无法让这个脚本正常运行。
我有一个非常基本的启动脚本,每次页面刷新时都会输出一个text / html / php的随机页面。
<?php
$pages = array(1 => 'text1-1.php', 2 => 'text1-2.php', 3 => 'text1-3.php', 4 => 'text1- 4.php');
$key = array_rand ( $pages );
include($pages[$key]) ;
?>
我的目标是让脚本每1天或2天(或指定的时间)只更改输出,因此无论刷新页面多少次,输出都不会更改,直到计时器到期
我已经尝试过以下拼凑在一起的人们给我的提示,但无论我尝试什么,每次刷新页面时,脚本总会输出不同的东西。
我认为问题是文件没有缓存,但我不明白为什么。
如果您还可以看到任何其他问题,我将不胜感激。 :)
感谢您提供的任何帮助。 :)
<?php
$pages = array(1 => 'text1-1.php', 2 => 'text1-2.php', 3 => 'text1-3.php', 4 => 'text1- 4.php');
$cachefile = "cache/timer.xml";
$time = $key = null;
$time_expire = 24*60*60;
if(is_file($cachefile)) {
list($time, $key) = explode(' ', file_get_contents($cachefile));
}
if(!$time || time() - $time > $time_expire) {
$key = rand(0,count($pages)-1);
file_put_contents($cachefile, time().' '.$key);
}
include($pages[$key]) ;
?>
答案 0 :(得分:2)
这种方法如何生成随机数:
srand(floor(time()/60/60/24/2));
$key = rand(0,count($pages)-1);
它将种子修复了两天(技术上为48小时,不一定匹配两整天)所以第一次调用rand()总是返回基于该种子的第一个数字。
答案 1 :(得分:1)
您是否检查过以确保文件实际已创建?目录“缓存”是否存在?你可以在Web服务器进程写入它吗?请注意,如果无法创建文件,file_put_contents将仅发出 WARNING ;如果您将服务器设置为不显示警告,则不会产生任何错误并且脚本似乎没有问题地运行。
我绝对同意该文件没有被写入;你的代码对我来说很好。 没有缓存/:
Warning: file_put_contents(cache/timer.xml): failed to open stream: No such file or directory in ...
使用缓存和写入权限:
$ php test.php
text1-1.php
$ php test.php
text1-1.php
$ php test.php
text1-1.php
$ php test.php
text1-1.php
$ php test.php
text1-1.php
$ php test.php
text1-1.php
$ php test.php
text1-1.php
$ php test.php
text1-1.php
$ php test.php
text1-1.php
$ php test.php
text1-1.php
答案 2 :(得分:1)
替换
if(!$time || time() - $time > $time_expire) {
使用
if (! $time || (time () - $time) > $time_expire) {
另外
mt_rand
优于rand
您可能想要更改
修改1
由于array
未从0
开始,您还应该
替换
$key = rand(0,count($pages)-1);
用
$key = mt_rand( 1, count ( $pages ));
或
制作阵列
$pages = array (
0 => 'text1-1.php',
1 => 'text1-2.php',
2 => 'text1-3.php',
3 => 'text1-4.php'
);
现在测试你的脚本..它完全正常......如果你还需要其他任何东西,请告诉我
由于
:)