Re: Intense CPU strain....suggestions
- From: Jerry Stuckle <jstucklex@xxxxxxxxxxxxx>
- Date: Thu, 31 May 2007 11:40:18 -0400
cbmeeks wrote:
Well, you could kick off a batch job to do your resizing, then return to
the user. That way it can keep processing the images. The only thing
you'll have to handle is when the user wants to display his gallery
before it's ready.
That's exactly how I want to do it. I just don't know the best way to
execute it. I like the idea of having an XML-RPC server running but I
am concerned with security (as I should be).
So, let's say I have the following code (using CI):
...
$this->Upload->do_uploads(); // handle the actual uploading.
$this->Photos->do_resizing(); // handle the resizing
redirect('waiting');
....
"Waiting" doesn't get kicked off until after do_resizing (sorry, new
to PHP). I'm sure there is a smarter way. I'd like to avoid pop-ups,
iframes, javascript, etc if possible.
I also thought about having the "do_resizing" simple add some records
to a db and have a program running on the server full time that checks
the db frequently. But wouldn't that be wasteful? I like the idea of
programs laying dormant until something kicks it in the pants and says
"do something!" lol
Thanks
cbmeeks
http://www.signaldev.com
First of all, the redirect won't happen until the code reaches there - which is after your resizing. So that's normal operation.
You could have a cron job kicked off every few minutes to resize the pictures, but again, you'll run into the problem that after uploading the user won't be able to see the pictures he's just uploaded - at least in various sizes.
You could use shell_exec() to start off a background process, i.e. (assuming Unix/Linux):
shell_exec('nohup myprog file1 file2 file3 2> /dev/null &');
nohup says to execute a command without hangups and no output, 2> /dev/null throws away any error messages, and the '&' at the end says run in the background.
You'll still run into a problem that the resizing might not occur as fast as the user wants to display it; you'll have to be able to handle this in your display routines.
Alternatively, you could do something like:
<body>
echo 'Resizing your images, please wait...<br>';
flush();
$this->Upload->do_uploads(); // handle the actual uploading.
$this->Photos->do_resizing(); // handle the resizing
echo 'Done!. <a href="nextpage.php">Click here to continue</a>';
</body>
The flush() works with most browsers if you keep the html simple - it forces the output to the browser and the browser displays it. But if you start to get fancy (i.e. tables, etc.), many browsers will wait for the end of the element to actually display.
The only problem with this is, once you've sent *any* output to the browser, you can't redirect them to another page via php (you could use an html redirect). That's why the link.
Just some ideas.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@xxxxxxxxxxxxx
==================
.
- Follow-Ups:
- Re: Intense CPU strain....suggestions
- From: cbmeeks
- Re: Intense CPU strain....suggestions
- References:
- Intense CPU strain....suggestions
- From: cbmeeks
- Re: Intense CPU strain....suggestions
- From: Geoff Berrow
- Re: Intense CPU strain....suggestions
- From: cbmeeks
- Re: Intense CPU strain....suggestions
- From: Jerry Stuckle
- Re: Intense CPU strain....suggestions
- From: cbmeeks
- Intense CPU strain....suggestions
- Prev by Date: Re: Variable substitution to replace switch
- Next by Date: Collecting User Information
- Previous by thread: Re: Intense CPU strain....suggestions
- Next by thread: Re: Intense CPU strain....suggestions
- Index(es):
Relevant Pages
|