Редактировать # 3 - После обсуждения в автономном режиме
Оказывается, JS инициировал 2-й запрос (в фоновом режиме) к сценарию PHP, который уменьшал количество хранимых шаблонов в сеансе.
В частности, это был preloader , который зацикливался на изображениях, которые инициировали дополнительный запрос к index.php.
img = document.images;
jax = img.length;
for(var i=0; i<jax; i++) {
console.log(img[i].src);
}
11: 38: 39.711 VM322: 5 http://plrtesting.herokuapp.com/index.php ** Этот
11: 38: 39,711 VM322: 5 https://i.imgur.com/gu9bfbD.gif
Конец редактирования
Код делает именно то, что вы говорите.
$currentTemplate = array_pop($_SESSION['templates']);
Вы удаляете , не извлекая конечный элемент и присваивая его своей переменной. Каждый раз, когда вы перезагружаете страницу, это popping
1 элемент массива. Вот почему вы видите, что это уменьшается со временем.
Вам нужно получить вместо этого. Если вы хотите последний элемент, то:
session_start();
$templates = array("t1.php","t2.php","t3.php"); #list of templates paths
if (!isset($_SESSION['templates']) || empty($_SESSION['templates'])) {
shuffle($templates); #shuffle them
$_SESSION['templates'] = $templates; #store them in sesssion
}
$currentTemplate = end((array_values($_SESSION['templates'])));
Редактировать # 1 - сделать так, чтобы он перетасовывался при каждой загрузке страницы
Обратите внимание, что существует несколько способов рандомизации шаблона. Взгляните на это так - Получить случайный элемент из массива .
session_start();
$templates = array("t1.php","t2.php","t3.php"); #list of templates paths
// Commented out the if statement so it shuffles on each page load.
//if (!isset($_SESSION['templates']) || empty($_SESSION['templates'])) {
shuffle($templates); #shuffle them
$_SESSION['templates'] = $templates; #store them in sesssion
//}
$currentTemplate = end((array_values($_SESSION['templates'])));
var_dump($currentTemplate);
РЕДАКТИРОВАТЬ # 2 - Не уверен, ясно это или нет, но ваш код зацикливается на оставшихся элементах; не всплывающий элемент.