Re: Logic sought
| From: | Nathan Nobbe | Date: | Thu, 10 Jul 2008 00:20:18 +0000 |
| Subject: | Re: Logic sought | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-276550@lists.php.net to get a copy of this message | ||
On Wed, Jul 9, 2008 at 6:11 PM, Jochem Maas <jochem@iamjochem.com> wrote:
> generate a unique hash as the name based on the contents of the zip, then
> if 2 people
> happen to want exactly the same selection you won't have to build/zip it
> twice ...
> just check if the zip happens to exist before trying to build it.
>
> have the script do garbage collection on old zip files ... in a script
> specific 'tmp'
> dir that stores the created zipfiles ... the GC can kick in on 1% of every
> requests (and
> maybe limits itself the ammount of time spent GCing)
>
> to elliminate race conditions completely you'll have to use a lock file,
> which the script needs to exclusively lock before attempting to create the
> zip ...
> a failure to get an exclusive lock means having to recheck the zip's
> existence
> (chances are some other script just created it). in addition a shared lock
> should be
> obtained before trying to read a zip, to avoid reading half written files.
if it is a high traffic site, on a *nix host, i recommend the sem* functions
from the sysv extension. theyre a lot faster than file locks.
-nathan