Давай предположим, что корзина основана на бд. Тебе понадобиться как минимум идентифицировать пользователя (самый простой способ, в качестве идентификатора использовать сессию). В таблице, тебе нужны поля : id товара и количество (минимум).
А теперь представь, что кто-то добавил в корзину товар и вышел - не очень хорошо, нужно очищать старые записи (добавляем поле со временем добавления записи и создаём задание на удаление).
Просто, не правда ли :) (сарказм).
А теперь представь, что сессии упрощают все выше. И тебе не нужно париться с очищением заказов.
Решить проблему с блокировкой файла сессий можно настроив их хранение в redis.
Сессии - палка о двух концах, когда нужно хранить немного данных, некоторое время - идеальный инструмент.