You will likely run into a slew of issues
1) Memory Size, definitely an issue here
2) The browser will likely time out in the process of zipping that much data
What I have personally done in the past, is I hand off that task to a cronjob that runs every X minutes. It picks up a file that explains what needs to be done, list of files, e-mail of person requesting the download, etc. It reads the file, creates the zip using a shell script, passes the location of the zip and the e-mail address to a PHP script, that kicks an email to the user with a download link.
I then have a cleanup script that removes the zip file after X number of hours/days.