i would go with sessions and you go to call insert_all() check to see if the session_register variable has been set, if not, continue with insert, if it has been set, don't do anything, return out of the function.
however, if you want to make this span out of sessions, the 'fool proofing' needs to be within your insert_all() still -- simply query the database seeing if they have read the given article before.. then if they have, return out of the function, if they haven't, proceed with inserting..
hope this could help? heh sorry, still waking up.