Код ниже делает следующее: выводит рекламный блок на сайте. В течение заданного интервала, пока пользователь ходит по сайту - окно не вылазиет. Через заданный интервал времени - оно снова появляется. Приведенный код работает. Но: периодически, окно все же НЕ появляется. Происходит это когда обновляешь стр-цу где-то на 9-й секунде, отсчета(~в 40%случаев, не всегда).
(а.Кусок кода проверки есть ли такой пользователь - удален, для упрощения
б.В реале конечно не в 10сек, это просто этап теста)
<?php
$ip_array_str = file_get_contents('guests_ip.txt');
$ip_array = unserialize($ip_array_str);
$ip_array_buf = $ip_array;
$current_time = time();
$dif_time = ($current_time - $ip_array[$_SERVER["REMOTE_ADDR"]]);
$advert_show = 0;
if ($dif_time > 10) {
$advert_show = 1;
$ip_array[$_SERVER["REMOTE_ADDR"]] = $current_time;
$ip_array_str = serialize($ip_array);
file_put_contents('guests_ip.txt', $ip_array_str);
}
//Отладочная инфа
echo '$$current_time='.$current_time.'<br/><br/>';
echo '$ip_array_FILE='.$ip_array_buf[$_SERVER["REMOTE_ADDR"]].'<br/>';
echo '$ip_array_PHP='.$ip_array[$_SERVER["REMOTE_ADDR"]].'<br/><br/>';
echo '$current_time - ArrayFile='.$dif_time.'<br/>';
echo '$current_time - PHP Array='.($current_time - $ip_array[$_SERVER["REMOTE_ADDR"]]).'<br/>';
echo '$advert_show='.$advert_show.'<br/>';
// Показывает следующее (два рефреша на 10-й и 20-й секунде после начала отсчета)
c2n.me/3hmx6kK Как видно оттуда, запись в файл где-то успела произойти. Но вот окно НЕ появилось!