summaryrefslogtreecommitdiff
path: root/b.php
diff options
context:
space:
mode:
authorMichael Walker <mike@barrucadu.co.uk>2016-08-20 00:54:56 +0100
committerMichael Walker <mike@barrucadu.co.uk>2016-08-20 00:54:56 +0100
commitafc2d2e4e1605c56294296894657d2c8c8a6b45c (patch)
tree31d585b42a3ea6343f9a759a550f8b32673c1015 /b.php
parent42988fe8efd89071608e2239ad1868dfe12362a2 (diff)
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.
Diffstat (limited to 'b.php')
-rwxr-xr-xb.php58
1 files changed, 42 insertions, 16 deletions
diff --git a/b.php b/b.php
index 9efa8afa..11d6ad34 100755
--- a/b.php
+++ b/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!
-// snags the extension
-$img_extension = pathinfo($name, PATHINFO_EXTENSION);
+// Get the files in a directory, returns null if the directory does
+// not exist.
+function getFilesInDirectory($dir) {
+ if (! is_dir($dir)) {
+ return null;
+ }
-// 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-Disposition: inline; filename=" . $name);
+ return array_diff(scandir($dir), array('.', '..'));
+}
-// readfile displays the image, passthru seems to spits stream.
-readfile($dir.$name);
-exit;
+// Serve a random banner and exit.
+function serveRandomBanner($dir, $files) {
+ $name = $files[array_rand($files)];
+
+ // snags the 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/" . 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);
?>