This an implentation issue, rather than specific to any particular language. The Observer Design pattern would be ideal for your situation.
According to Wikipedia:
The observer pattern is a software design pattern in which an object, called the subject, maintains a list of its dependents, called observers, and notifies them automatically of any state changes, usually by calling one of their methods.
So in this case, your "Observers" are your players, which you would register with the "Subject". Whenever an Observer changes its state (rolls the dice), the Subject is notified, and then all other Observers are notified as well.
How you store the data isn't really important here. As long as the Observer notifies the Subject that it has rolled the dice, the Subject can then update all Observers registered with it.
You could store/retrieve the data from a database table. You then only have to write to it as each player makes their move, and read from it when the Subject is notified to update all the Observers of the move.
So each player could have their own id, which would be your primary table key, and when one of them makes a move, the table is updated. You'll need a way of notifying your game to know the table has been updated. Writing it to an xml file the game constantly checks would be one way, and it would update the players when the xml data changes.
There's all sorts of ways you can implement the pattern, but you'll find it much easier to figure out using the Observer pattern.