Почему код себя так странно ведет?
перед вызовом setcookie() пишем var_dump($time);
и смотрим что в ней реально находится
Проблема решена. В одном из мест вызывался тот же метод и там приходил 0, из-за чего сессия не писалась, так как "невалидно". Всем спасибо.