Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在每天午夜12点旋转图像?_Php_Javascript_Jquery - Fatal编程技术网

Php 如何在每天午夜12点旋转图像?

Php 如何在每天午夜12点旋转图像?,php,javascript,jquery,Php,Javascript,Jquery,我需要在每天午夜12点从一组5-10张图片中旋转一张图片。我如何使用JavaScript、jQuery甚至PHP来实现这一点?如果您运行的是linux系统,您可以设置一个,或者如果您在windows上,您可以使用windows任务调度器如果您运行的是linux系统,您可以设置一个,或者如果您在windows上,您可以使用windows任务调度器可能我不理解问题 如果您只想更改映像,请编写批处理文件/cron作业,并让它每天运行。 如果要在周一显示某个图像,而在周二显示另一个图像,请执行以下操作:

我需要在每天午夜12点从一组5-10张图片中旋转一张图片。我如何使用JavaScript、jQuery甚至PHP来实现这一点?

如果您运行的是linux系统,您可以设置一个,或者如果您在windows上,您可以使用windows任务调度器如果您运行的是linux系统,您可以设置一个,或者如果您在windows上,您可以使用windows任务调度器可能我不理解问题 如果您只想更改映像,请编写批处理文件/cron作业,并让它每天运行。 如果要在周一显示某个图像,而在周二显示另一个图像,请执行以下操作:


也许我不明白这个问题。 如果您只想更改映像,请编写批处理文件/cron作业,并让它每天运行。 如果要在周一显示某个图像,而在周二显示另一个图像,请执行以下操作:


我会在午夜后第一次访问时执行此操作。

我会在午夜后第一次访问时执行此操作。

在基本级别上,您要做的是定义一个图像名称数组,然后从给定时间点开始计算天数,然后将除以图像数量后的余数进行模化,然后访问数组中的索引并设置图像,例如,未经测试的代码

var images = new Array("image1.gif", "image2.jpg", "sky.jpg", "city.png");
var dateDiff = new Date() - new Date(2008,01,01);
var imageIndex = Math.Round(dateDiff/1000/60/60/24) % images.length;
document.GetElementById('imageId').setAttribute('src', images[imageIndex]);

请记住,任何客户端解决方案都将使用客户端的日期和时间,因此,如果您对午夜的定义是在您的时区内,那么您需要在PHP服务器上执行类似的操作。

在基本级别上,您要做的是定义一个图像名称数组,然后从给定的时间点开始计算天数然后将除以图像数后的余数模化,访问数组中的索引并设置图像,例如未测试的代码

var images = new Array("image1.gif", "image2.jpg", "sky.jpg", "city.png");
var dateDiff = new Date() - new Date(2008,01,01);
var imageIndex = Math.Round(dateDiff/1000/60/60/24) % images.length;
document.GetElementById('imageId').setAttribute('src', images[imageIndex]);
请记住,任何客户端解决方案都将使用客户端的日期和时间,因此,如果您对午夜的定义是在您的时区内,那么您需要在PHP服务器上执行类似的操作。

您有两个选择

在JavaScript中,如果有7个以上的图像,基本上可以根据一周中的某一天或一个月中的某一天选择一个图像。按图像数组长度的月模天数应该可以让您选择正确的数组元素

你需要一些更有状态的东西来跟踪正在发生的事情。。。使用SQL,您可以跟踪何时使用图像,并从旋转列表中拾取图像。您还可以使用PHP维护的文本文件来跟踪有序列表

传统的方法是使用cron作业来旋转图像,但我现在会避免这种情况。

您有两种选择

在JavaScript中,如果有7个以上的图像,基本上可以根据一周中的某一天或一个月中的某一天选择一个图像。按图像数组长度的月模天数应该可以让您选择正确的数组元素

你需要一些更有状态的东西来跟踪正在发生的事情。。。使用SQL,您可以跟踪何时使用图像,并从旋转列表中拾取图像。您还可以使用PHP维护的文本文件来跟踪有序列表


传统的方法是让cron作业旋转图像,但我现在会避免这种情况。

这取决于您如何旋转图像-顺序、随机还是什么

有很多选择。您可以在PHP中确定所需的图像,并动态更改元素以指向正确的位置。如果您已经在动态生成页面,这是最好的

您可以始终指向单个URL,该URL是一个PHP文件,用于确定要显示的图像,然后执行302重定向。如果您有静态页面,而您不希望产生动态生成的开销,那么这会更好

不要让图像URL本身为不同的图像服务。您将毫无理由地提高缓存命中率,并在应该是静态资源的资源上产生不必要的开销


Martin,这里的“旋转”指的是有规律的改变,而不是绕轴旋转。

这取决于你如何旋转它们-顺序、随机还是什么

有很多选择。您可以在PHP中确定所需的图像,并动态更改元素以指向正确的位置。如果您已经在动态生成页面,这是最好的

您可以始终指向单个URL,该URL是一个PHP文件,用于确定要显示的图像,然后执行302重定向。如果您有静态页面,而您不希望产生动态生成的开销,那么这会更好

不要让图像URL本身为不同的图像服务。您将毫无理由地提高缓存命中率,并在应该是静态资源的资源上产生不必要的开销


马丁,这里的“旋转”指的是有规律的变化,而不是绕轴旋转。

这取决于你到底想实现什么。只是想显示一个随机图像?也许这个javascript 代码段将帮助您开始:

var date = new Date();
var day = date.getDate(); // thats the day of month, use getDays() for day of week

document.getElementById('someImage').src = '/images/foo/bar_' + (day % 10) + '.gif';

这取决于你到底想要实现什么。只是想显示一个随机图像?也许这个javascript代码片段可以帮助您开始:

var date = new Date();
var day = date.getDate(); // thats the day of month, use getDays() for day of week

document.getElementById('someImage').src = '/images/foo/bar_' + (day % 10) + '.gif';

它甚至不必在cron中:

<?php
// starting date for rotation
$startDate = '2008-09-15';
// array of image filenames
$images = array('file1.jpg','file2.jpg',...);

$stamp = strtotime($startDate);
$days = (time() - $stamp) / (60*60*24);
$imageFilename = $images[$days % count($images)]
?>

<img src="<?php echo $imageFilename; ?>"/>

它甚至不必在cron中:

<?php
// starting date for rotation
$startDate = '2008-09-15';
// array of image filenames
$images = array('file1.jpg','file2.jpg',...);

$stamp = strtotime($startDate);
$days = (time() - $stamp) / (60*60*24);
$imageFilename = $images[$days % count($images)]
?>

<img src="<?php echo $imageFilename; ?>"/>
编辑:我完全误解了这个问题,认为它没有使用javascript/PHP。所以不要理会这种反应。我不会删除它,只是以防万一有人疯狂到想要使用这种方法

如果没有Javascript、PHP或任何其他形式的脚本语言,那么实现它可能会很困难。实际上,这是非常做作的,因为即使是最基本的JS/PHP,它也很简单

无论如何,要真正回答你的问题,我能想到的使用香草HTML的唯一方法是设置一个shell脚本在午夜运行。该脚本只会重命名您的文件。在linux或Windows任务调度器上使用cron执行此操作,脚本类似于这样:下面是不可靠的伪代码,可以转换为您喜欢的任何代码

在HTML中,只需执行以下操作:

<img src="path/to/current.jpg" />
每天,current.jpg都应该换成新的东西。如果您使用的是任何类型的缓存控制,请确保对其进行更改,使其缓存时间不会超过几个小时。

编辑:我完全误解了这个问题,因为没有使用javascript/PHP。所以不要理会这种反应。我不会删除它,只是以防万一有人疯狂到想要使用这种方法

如果没有Javascript、PHP或任何其他形式的脚本语言,那么实现它可能会很困难。实际上,这是非常做作的,因为即使是最基本的JS/PHP,它也很简单

无论如何,要真正回答你的问题,我能想到的使用香草HTML的唯一方法是设置一个shell脚本在午夜运行。该脚本只会重命名您的文件。在linux或Windows任务调度器上使用cron执行此操作,脚本类似于这样:下面是不可靠的伪代码,可以转换为您喜欢的任何代码

在HTML中,只需执行以下操作:

<img src="path/to/current.jpg" />

每天,current.jpg都应该换成新的东西。如果要使用任何类型的缓存控件,请确保对其进行更改,使其缓存时间不会超过几个小时。

我假设“旋转图像”的意思是更改正在使用的图像,而不是围绕轴进行旋转变换-一种简单的方法是使用一个哈希表,将日模X映射到图像名称

$imgs = array("kitten.jpg", "puppy.gif","Bob_Dole.png");    
$day_index = 365 * date("Y") + date("Z")

...

<img src="<? $imgs[$day_index % count($imgs)] ?>" />

抱歉,如果我的语法错误,我真的不知道PHP

我假设“旋转图像”是指更改正在使用的图像,而不是围绕轴旋转变换-一种简单的方法是创建一个哈希表,将日模X映射到图像名称

$imgs = array("kitten.jpg", "puppy.gif","Bob_Dole.png");    
$day_index = 365 * date("Y") + date("Z")

...

<img src="<? $imgs[$day_index % count($imgs)] ?>" />

抱歉,如果我的语法错误,我真的不知道PHP是否设置了图像目录。 选择七幅图像,将它们命名为0.jpg、1.jpg、2.jpg、3.jpg、4.jpg、5.jpg、6.jpg, 使用带有id为rotatingimage的HTML图像标记的mootools Javascript框架:

var d=new Date();
var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
var offset = -10;  // set this to your locale's UTC offset
var desiredTime = utc + (3600000*offset);
new dd = new Date(desiredTime); 
$('rotatingimage').setProperty('src', dd.getDay() + '.jpg'); 

设置图像目录。 选择七幅图像,将它们命名为0.jpg、1.jpg、2.jpg、3.jpg、4.jpg、5.jpg、6.jpg, 使用带有id为rotatingimage的HTML图像标记的mootools Javascript框架:

var d=new Date();
var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
var offset = -10;  // set this to your locale's UTC offset
var desiredTime = utc + (3600000*offset);
new dd = new Date(desiredTime); 
$('rotatingimage').setProperty('src', dd.getDay() + '.jpg'); 

这里有一个解决方案,可以每天从目录中随机选择一个图像,这可能比这里发布的其他解决方案更容易,因为你所要做的就是上传它,而不是编辑数组,或者以任意方式命名文件

function getImageOfTheDay() {
    $myDir = "path/to/images/";

    // get a unique value for the day/year.
    // 15th Jan 2008 -> 10152008. 3 Feb -> 10342008, 31 Dec -> 13662008
    $day = sprintf("1%03d%d", date('z'), date('Y'));

    // you could of course get gifs/pngs as well.
    // i'm just doing this for simplicity
    $jpgs = glob($myDir . "*.jpg");
    mt_srand($day);
    return $jpgs[mt_rand(0, count($jpgs) - 1)];
}
唯一的问题是,有可能连续两天看到相同的图像,因为这是随机选取的。如果您想按字母顺序获得它们,那么可以使用这个。只更改最后两行


这里有一个解决方案,可以每天从目录中随机选择一个图像,这可能比这里发布的其他解决方案更容易,因为你所要做的就是上传它,而不是编辑数组,或者以任意方式命名文件

function getImageOfTheDay() {
    $myDir = "path/to/images/";

    // get a unique value for the day/year.
    // 15th Jan 2008 -> 10152008. 3 Feb -> 10342008, 31 Dec -> 13662008
    $day = sprintf("1%03d%d", date('z'), date('Y'));

    // you could of course get gifs/pngs as well.
    // i'm just doing this for simplicity
    $jpgs = glob($myDir . "*.jpg");
    mt_srand($day);
    return $jpgs[mt_rand(0, count($jpgs) - 1)];
}
唯一的问题是,有可能连续两天看到相同的图像,因为这是随机选取的。如果您想按字母顺序获得它们,那么可以使用这个。只更改最后两行


如何旋转图像已经以多种方式进行了描述。如何检测何时触发旋转取决于您正在做什么,请澄清,人们可以提供更好的答案

选择包括:

在“午夜后第一次进入”时触发旋转。假设某种初始事件,例如用户访问 使用操作系统调度功能触发*nix上的rotate cron、Windows上的at/task调度器 编写代码以检查时间和旋转
选项3有一个风险,即编码不好的解决方案可能会过度占用资源。

如何旋转图像已经用多种方式进行了描述。如何检测何时触发旋转取决于您正在做什么,请澄清,人们可以提供更好的答案

选择包括:

引发腐败 在“午夜后第一次进入”吃东西。假设某种初始事件,例如用户访问 使用操作系统调度功能触发*nix上的rotate cron、Windows上的at/task调度器 编写代码以检查时间和旋转
选项3有一个风险,即编码错误的解决方案可能会过度占用资源。

hmmm,这似乎与damieng的解决方案相同,仅8分钟后:oopshmm,这似乎与damieng的解决方案相同,仅8分钟后:oops