Der session.gc_maxlifetime-Wert wird sowieso nur dann berücksichtigt, wenn der Garbage Collector ausgeführt wird. Und das ist wiederum von den Werten session.gc_probability und session.gc_divisor abhängig, die mit der Formel gc_probability/gc_divisor die Wahrscheinlichkeit festlegen, mit der der Garbage Collector gestartet wird. Die Standardwerte sind hier 1 beziehungsweise 100, was also eine Wahrscheinlichkeit von 1/100=1% ergibt, der Garbage Collector also nur in 1% aller session_start()-Aufrufe ebenfalls gestartet wird.
Deswegen sollte auch eine eigener Mechanismus implementiert werden, der die Lebensdauer der aktuellen Sitzung prüft und diese gegebenenfalls ungültig macht.