Nasıl her gün 12 gece yarısı bir görüntüyü döndürmek mi?

11 Cevap php

Ben 5-10 görüntülerin bir grup her gün 12 gece yarısı bir görüntüyü döndürmek gerekir. Nasıl javascript veya jquery ya da php ile bunu hakkında gidebilir?

11 Cevap

Temel düzeyde ne yapmak istiyorum o görüntülerin sayısı ve erişim ile zaman içinde belirli bir noktadan sonra modül (bölünmesi sonrası kalan) gün sayısını almak görüntü adlarını bir dizi tanımlamak olduğu endeksi dizi ve set görüntü, örneğin (Denenmemiş kodu)

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]);

Gece yarısı sizin tanımı sizin zaman diliminde, o zaman PHP sunucu üzerinde benzer bir şey yapmak gerekir anlamına gelir, bu yüzden herhangi bir istemci tarafı çözüm müşterinin tarih ve saati kullanarak olacağını unutmayın.

Ben gece yarısından sonra ilk erişim bunu yapardım.

Hatta cron olmak zorunda değildir:

<?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; ?>"/>

Edit: I totally misread this question as "without "javascript / PHP kullanarak. Yani bu tepkiyi dikkate almayın. Herkes bu yöntemi kullanmak istediğiniz kadar deliydi sadece durumda, silmeden değilim.

JavaScript, PHP, ya da betik dili başka bir biçimde olmadan yapıyor zor olabilir. Hatta en temel JS / PHP ile önemsiz olacağından Eh aslında, sadece, çok yapmacık olur.

Her neyse, aslında soruyu cevaplamak için, ben vanilya HTML ile bunu yaptığını düşünebilirsiniz tek yolu gece yarısı çalıştırmak için bir kabuk komut dosyası kurmak olduğunu. Bu komut sadece dosyaları yeniden adlandırmak istiyorum. Tür, bu gibi bir komut ile cron (linux) veya Windows Görev Zamanlayıcı ile bu yapın: (dodgy pseudo code follows, convert to whatever you're comfortable with).

let number_of_files = 5

rename current.jpg to number_of_files.jpg

for (x = 2 to number_of_files)
    rename x.jpg to (x-1).jpg

rename 1.jpg to current.jpg

HTML'nizdeki, sadece bunu:

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

Ve her gün, current.jpg yeni bir şey değiştirmek gerekir. Eğer önbellek-kontrol herhangi bir tür kullanıyorsanız, birkaç saat daha uzun önbelleğe almaz ki bunu değiştirmek için emin olun.

Burada rotasyon içine bir şey almak için yapmanız gereken onu upload beri bir dizi, ya da adını düzenlemek yerine, burada yayınlanan bazı diğer çözümlere daha kolay olabilecek bir dizine, günde rastgele bir görüntü seçecek bir çözüm keyfi şekillerde dosyaları.

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)];
}

Tek şey bu rastgele seçer beri iki gün üst üste aynı görüntüyü görme olasılığı var olmasıdır. Eğer bunları sırayla almak istedim, alfabetik sırayla, belki de, o zaman bunu kullanın. (only the last two lines are changed)

function getImageOfTheDay() {
    $myDir = "path/to/images/";
    $day = sprintf("1%03d%d", date('z'), date('Y'));
    $jpgs = glob($myDir . "*.jpg");
    return $jpgs[$day % count($jpgs)];
}

Ne görüntüleri döndürmek için bir dizi yolla tarif edilmiştir. (Açıklamak ve insanların daha iyi bir cevap verebilir lütfen) döndür ne yapıyorsun bağlıdır tetiklemek için when tespit etmek için nasıl.

Seçenekler şunlardır:

  1. 'Gece yarısından sonra ilk erişim' üzerinde dönmesini tetikler. Olayı başlatan çeşit (ör: kullanıcı erişim) varsayar
  2. (* Nix cron, at / Windows görev zamanlayıcısı) döndürmek tetiklemek için OS zamanlama yeteneklerini kullanın
  3. Zaman ve kontrol etmek için kod yazın döndürmek

Seçenek 3 kötü kodlanmış bir çözüm aşırı yoğun kaynak olabilir riski vardır.

Eğer bir linux sistemi çalıştırıyorsanız, bir Cron Job ayarlayabilirsiniz veya pencere üzerinde iseniz windows görev zamanlayıcı kullanabilirsiniz

İki seçeneğiniz var.

  1. JavaScript, temelde fazla 7 resim varsa bu ayın haftanın veya günün gününde dayalı bir görüntü seçin var. Görüntü dizinin uzunluğu ay modulonun gün sen sağ dizi eleman almak izin vermelisiniz.

  2. Sen neler izlemek için biraz daha durumsal bir şey gerekir ... Eğer görüntüler kullanıldığında izlemek ve dönen listeden seçebilirsiniz SQL kullanarak. Ayrıca sıralı liste izlemek için PHP tarafından tutulan bir metin dosyasını kullanabilirsiniz.

Eski okul yolu, bir cron işi görüntüyü döndürmek için, ama bu gün o önlemek istiyorum.

Rastgele, sırayla, ya da ne - İşte bunları nasıl döndürürken bağlıdır?

Bir dizi seçenek vardır. Eğer PHP istediğiniz görüntü belirlemek ve dinamik doğru yere işaret edecek <img> elemanı değiştirebilirsiniz. Zaten dinamik sayfaları oluşturmak varsa bu en iyisidir.

Sen her zaman göstermek için hangi görüntüyü belirler ve daha sonra bir 302 gerçekleştiren bir PHP dosyası buna yönlendirmek tek bir URL, işaret edebilir. Sizin için dinamik nesil yükünü uğramak istemiyorum statik sayfalar varsa, bu daha iyidir.

Görüntü URL kendisi farklı görüntüleri hizmet yapmayın. Sen iyi bir neden için önbellek isabet oranı vida ve bir statik kaynak ne olması gerektiği üzerinde gereksiz yük tabi olacak.

Martin, bu bağlamda "döndürmek", "düzenli bir değişim", "bir eksen etrafında çevirmek" anlamına gelir.

Size ulaşmak istediğiniz tam olarak ne (TM) bağlıdır. Sadece bir "rastgele" görüntüyü görüntülemek istiyorsun? Belki bu javascript parçacığını başlamak olacaktır:

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';

Ne demek "bir eksen etrafında dönme dönüşümü" "kullanımda görüntüyü değiştirmek" ve "döndürme görüntü" ile kabul - basit bir şekilde bir görüntü adına günlük modül X eşleştiren bir karma tablo sahip olmaktır.

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

...

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

(Ben sözdizimi yanlış var ise üzgünüm, ben gerçekten PHP bilmiyorum))