при отображении вашей страницы большинство браузеров немедленно запрашивают четыре изображения ... почти все одновременно.Ваш код "случайного" выбора изображения основан на time (), который возвращает количество секунд с начала unixtime.выполненный 4 раза в течение одной и той же секунды , он также даст тот же результат 4 раза.
Ваш код:
$imageNumber = time() % count($fileList);
$img = $folder.$fileList[$imageNumber];
должен быть переписан как:
// filelist starts with "0", count with "1" .. so we are off-by-one and first picture would never show without -1
$imageNumber = rand() % (count($fileList) - 1);
$img = $folder.$fileList[$imageNumber];
таким образом вы получите «случайные» картинки.
Кроме того, то, что прокомментировал Мистер Листер, является полностью действительным - ваш браузер может также кэшировать изображение и, таким образом, запрашивать Picutre только один раз и просто отображать его снова и снова, используя свой кэш.
, чтобы избежатьпри этом замените любой <img src="random.php">
на <img src="random.php?rand=<?= rand(); ?>">
Но обратите внимание:
ваш сервер может в конечном итоге возвращать одно и то же случайное число несколько раз, так что в конечном итоге (редко) вы будете в конечном итоге содно и то же изображение дважды на одной странице.
, чтобы исправить это, вы должны полностью переписать свой код.
сценарий, отображающий страницу, должен решить, какие изображения выбрать, и убедиться, что изображение не отображается дважды, вместо того, чтобы просто включить сценарий «дать случайное изображение», который не зависит от отображаемой страницы.
гораздо проще, вы можете попробовать это:
// find all images - case SenSItivE
$all_images = glob("/path/to/images/*.{jpeg|jpg|png|gif}", GLOB_BRACE);
// bring array in random order
shuffle($all_images);
// pick four random images - you may also use a for or foreach loop to iterate the array
list ($img1, $img2, $img3, $img4) = $all_images;
// write code to display four images here