Beth, you've put your finger on the tricky part of maintaining a cache system. If "right now" is important to you, the processes that update information in the core database need to trigger a "flush" of appropriate cache information. If "right now" is not important, then you can manage the situation by flushing the entire cache periodically. Since PHP is a programming language and not a content-management system, it doesn't provide that functionality directly, but it could be implemented in a system built using PHP.
You should give some thought to how caching applies to different types of information, and how pages can be decomposed into separately cacheable elements. On some Web sites it might be appropriate to have certan navigational elements that would be unique to a day cycle. Those elements might be built on demand out of a database, and placed into a particular cache area that would be flushed at midnight. Other elements (such as sitewide branding) might be maintained in a content-management system but could persist in cache until the designer decides to rejigger the look and feel. Some elements might be appropriately subjected to short-cycle time-based cache flushing (latest headlines, updated every six minutes) and others might have to be "right now" coherent with the core database.
The object of all of this would be to move into a content-management database all elements that site managers might want to update at their whim, while avoiding needless hits on the database.