Implement priority banners.
If the directory "banners_priority" exists and contains files, a file from it is served 33% of the time, an a file from "banners" 66% of the time. This may seem like an odd definition of "priority", but assuming far fewer priority banners than normal banners, this gives them extra weight in the selection. Before, any 1 banner in 100 had a 1% chance of being served; now if that banner is a priority banner it has a 33% chance.
This commit is contained in:
parent
42988fe8ef
commit
afc2d2e4e1
40
b.php
40
b.php
@ -1,21 +1,47 @@
|
||||
<?php
|
||||
//renaming to b.php
|
||||
$dir = "banners/";
|
||||
$files = scandir($dir);
|
||||
$images = array_diff($files, array('.', '..'));
|
||||
$name = $images[array_rand($images)];
|
||||
// This script assumes there is at least one normal (non-priority)
|
||||
// banner!
|
||||
|
||||
// Get the files in a directory, returns null if the directory does
|
||||
// not exist.
|
||||
function getFilesInDirectory($dir) {
|
||||
if (! is_dir($dir)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return array_diff(scandir($dir), array('.', '..'));
|
||||
}
|
||||
|
||||
// Serve a random banner and exit.
|
||||
function serveRandomBanner($dir, $files) {
|
||||
$name = $files[array_rand($files)];
|
||||
|
||||
// snags the extension
|
||||
$img_extension = pathinfo($name, PATHINFO_EXTENSION);
|
||||
$ext = pathinfo($name, PATHINFO_EXTENSION);
|
||||
|
||||
// send the right headers
|
||||
header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1
|
||||
header('Pragma: no-cache'); // HTTP 1.0
|
||||
header('Expires: 0'); // Proxies
|
||||
header("Content-type: image/" . $img_extension);
|
||||
header("Content-type: image/" . ext);
|
||||
header("Content-Disposition: inline; filename=" . $name);
|
||||
|
||||
// readfile displays the image, passthru seems to spits stream.
|
||||
readfile($dir.$name);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Get all the banners
|
||||
$bannerDir = "banners/";
|
||||
$priorityDir = "banners_priority/";
|
||||
|
||||
$banners = getFilesInDirectory($bannerDir);
|
||||
$priority = getFilesInDirectory($priorityDir);
|
||||
|
||||
// If there are priority banners, serve 1/3rd of the time.
|
||||
if($priority !== null && count($priority) !== 0 && rand(0,2) === 0) {
|
||||
serveRandomBanner($priorityDir, $priority);
|
||||
}
|
||||
|
||||
serveRandomBanner($bannerDir, $banners);
|
||||
?>
|
||||
|
Loading…
Reference in New Issue
Block a user