Now, what type of system is this running on? As I think it might make a bit of a difference.
Without a complete idea of PHP I'll just ramble on so bear with me.
I'm thinking of all of this in Linux, sorry if you've already thought of this.
What I'd probably do is try to make a simple script(ie shell script)so that I can at least see if I could figure it out in the first place.
What you might be able to do is do a dir listing in PHP and pipe the output to a tar or zip. if using PHP, then you could use Bzip2(
Bzip2 docs) to just zip the dir itself.
I doubt it helped, but hopefully it might have had some use.