Johnny
Rather than an Ajax system, I would suggest using Cron in Php. Here are some interesting articles on it.
Article 1
Article 2
Wordpress uses Cron to do automatic posting based scheduling which words on Linux as well as windows. You can probably look at that script and make your mods to the script to suit your CMS.
The same concept can used to expire posts also. There is one other simple way to but I am not sure if its elegant.
A post is obviously scheduled in the future date. So when we are doing the querying for posts to be displayed in the UI the select query can be like this
SELECT * FROM POSTS_TABLE WHERE PUBLISH_DATE <= CURRENT_DATE
What this query will do is, return all the posts in the table whose publish date is less or equal to the current date on the server. For instance, if you have the following
Post 1 - 03/03/2009
Post 2 - 03/04/2009
Post 3 - 03/05/2009
Post 4 - 03/06/2009
Assuming the current date is 03/05/2009 then the select query will return only the first three posts. Now when the date changes and If the user is any random page, and either goes to the home page or does even a refresh on the home page the query will change to give you the results of all 4 posts. I am giving this logic on the top of my head so I am not really sure if it has any loop holes

.
Let me know if you need any help on this, would be glad to help you out.