Re: Logic sought

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jul 9, 2008 at 7:45 PM, tedd <tedd@xxxxxxxxxxxx> wrote:
> Hi gang:
>
> Here's the logic problem.
>
> First the site:
>
> http://php1.net/b/zip-files/
>
> Now, the site works well enough. The user selects what they want, clicks
> Submit, the order is assembled in zip file and presented to the user for
> downloading.
>
> However, as it stands now, before the script assembles the test.zip, it
> deletes (unlinks) the previous test.zip and therein lies the problem.
>
> If two, or more, users hit the site at the same time then a RACE condition
> may have one user getting something they didn't ask for or not getting
> anything at all.
>
> The complicated way I figure I could solve this would be to:
>
> 1. Generate a random string name for the file -- instead of test.zip, it
> could be ax12nhg34.zip.
>
> 2. Then when the user selects the download that would trigger a javascript
> routine that would send the name of the file to be deleted to a slave php
> script that would unlinks the file.
>
> I know this will work, but if the user never downloads the file, then the
> files accumulate on the server.
>
> Does anyone have a better idea?
>
> Thanks,
>
> tedd
>
> --
> -------
> http://sperling.com  http://ancientstones.com  http://earthstones.com
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

Well this is sort of a question that can only be answered based on
some answers such as, what will the request load be on this, how many
theoretical files will this generate, just stuff like that.

If you aren't worried about cpu load, you can probably use the streams
api to make a zip file in memory and spit that out to the user without
ever creating a file on demand.

If you want this to be fast, then you need to cache zip files or
pre-generate them to users and store them in some sort of sane
filename based on selected options.  This way there isn't randomly
generated files being re-created for no reason.

The other option is to just generate a random filename and cron-delete
them after so long.

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux