Puoi utilizzare ad esempio una soluzione mista.
Nella tabella del carrello aggiungi una colonna con l'id di sessione.
In questo modo hai il carrello bello funzionante per i loggati e non e sfrutti le sessioni del php.