jeri, The repeated execution is the easy part. And you don't have to settle for merely once a day. Cron is the tool you're looking for. (Windows servers have an equivalent which I can't help you with). Cron is so wildly flexible that you can run the script at any interval you can imagine. Every day, every minute, or 20 minutes after the top of the hour every hour from 9-5 on Mon-Fri.
Step 1. Ask your ISP what text editor is the default when you edit crontab
(It will be pico, vi, emacs, or Jove).
Step 2. Google for how to save and exit that text editor
Step 3. Learn to SSH into your server.
Step 4. type crontab -e
Step 5. type:
0,30 wget http://www.yourdomain.com/process_incoming_xml_zip.php
Step 6. Save and exit the text editor
Google for crontab to find out what the "0,30 " means and how to change it to arrive at any execution interval you desire.
Your process_incoming_xml_zip.php will need:
if (file_exists("/path/to/wherever/xml/file/arrives/filename.xml.zip"))
Don't run it every minute because unzipping the files might take a long time and you don't want the script to start running while the script is already running from a previous cron invocation a minute earlier. A cleaner way to handle this would be: When you detect the file, rename it immediately and then begin processing it. That way, if cron runs your processing script again, it won't see the file and start processing it.
After your script finds the file, deletes all the files and unzips the archive, then you should use:
unlink("/path/to/wherever/xml/file/arrives/filename.xml.zip");
That will delete the file so that you are ready for the next arrival.
Don't worry about running your script once a minute. The server is designed to handle hundreds of hits per second - one file running once a minute puts zero load on your server - so small it's not measurable.