Uhm ..... il probloema mi sa e' il sessionId che in cron/command line non viene intercettato proprio perche' il chiamante non lo spedisce.
Puoi risolverlo gestendoti il sessionId (credo)... non ho mai provato pero'
Ma in teoria dovresti poter accedere alla sessione a patto di conoscerne il relativo id che potresti nel caso tracciare in tabella sql.
Solo che in questi casi le cose diventano un poco piu' complesse, e la gestione delle sessioni implica un bel po' di problemi.
Cmq come hai fatto e' un controllo che va bene per quello che devi fare.
Poi dipende cosa devi gestire e se ti servono assolutamente i dati di sessione.