Sounds like you're going to need a cron job to take care of this. Assuming you are using a Unix-type system this is easily accomplished. You'll need to create a cron job that will run at specified intervals, query the database to find those articles whose 'publish_date' is older than the current date/time and hasn't been published yet. Once you get the correct records you'll do whatever you need to with that data and then record that those records have already been published (so you don't re-publish them next time).
I generally choose to accomplish tasks like this with a Perl script since running PHP from the command line requires compiling it as a CGI executable (which I haven't tried yet). I suppose you could also get around compiling PHP as a CGI executable by just writing a short Perl script that will open up a request on port 80 and execute a PHP script through the web server, but I haven't tried this out either and I imagine you might run into problems with time-outs if you need to execute something that will take a while to complete. Good luck - let me know if any of that didn't make any sense.