Sounds like a memory leak or a php bug. A quick fix on a Gnu/Linux/BSD box with the killall command (the good killall, not the evil sun version) is to put a one line script like 'killall -1 httpd' in your crontab file to run every so often.
Another trick is to set the apache server to only serve something like 100 pages before killing the child process and restarting it.
I had to do this when I started using persistant database connections to get my resources back.