Question

Background Processing

Asked by: jtanner

On my site, users will fill in a form and upload a few files.  The upload is fine as its handled just as id like using uploadify, however, on submisison of the form, i was to run a script / page in the background that would process and resize the mages without any hold or restrictions on the end user (eg, waiting for it to finish)  Currently, the resizing is done on submit, so it looks like its struggling as it sits "Loading" for a min or 2 before then going on to the second page.  Id like to call a page or something so that the submission would appear instant, and the images would be processed in the background.

The post ive "related" to, talks of CFX_HTTP5 but i have no idea how to use or implement it!

i would really appreciate any help.

user id is stored in session variable, so only params required be for the filename.

Many thanks in advance

James

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2009-10-22 at 09:32:13ID24835199
Topics

ColdFusion Application Server

,

ColdFusion Studio

Participating Experts
2
Points
500
Comments
16

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. Serialization or instant processing ?
    I would like to know if the APACHE web server starts/uses a new thread to process a SECOND or THIRD requests from an user OR serializes each requests within ONLY one thread. Think an internet user opens a browser to an APACHE website. APACHE starts/uses a thread to process t...
  2. PARAM
    In C# , we have PARAM concept that means 1 or many parameters are ok . In Java , do we have like that ? For example public void A( parameters ) { } parameters in some cases are 2 , in some cases are 3 , 4 , 5 ... For ex : A(house , chair) , A(y , x , e ) , A( r , t , b, h ...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: azadisaryevPosted on 2009-10-22 at 10:03:14ID: 25636405

part of the 'struggle' can definitely be just the 'uploading' of the file from user's computer to your server - the larger the file the longer it takes to upload it. the only way it can be anything close to 'instant' is if the file is very small and the user's Internet connection is super fast.

there are a number of things you can do, however, to speed up file processing after it has been uploaded.

- you can use <cfthread> to spawn a separate thread for resiging etc the uploaded file
- you can create a scheduled task to process images in a designated directory once every X number of time units
- similar to the above, you can create a 'directory watcher' event gateway to watch for new files in a designated folder and process them as needed

all of the above options will require you to devise a way to notify the user when file processing is finished, if your app requires the user to know this.

on the other hand, if you look at all the web applications out there that work with images - flickr, facebook, etc - none of them are 'instant': a user selects file to upload, then sits and looks at his screen as the files are being processed, the more files the longer...  so do consider it very carefully if this is a crucial functionality of your application or not - trying to do this 'in the background' may be more work and add more complexity to your code and application than is justifiable...

Azadi

 

by: SidFishesPosted on 2009-10-22 at 10:40:24ID: 25636884


Cfx_http5 is a fantastic tool and it gets used here everyday as poart of an "intelligent agent" for a  critical business process here... was well worth the $50

It can be used to upload files using post & multipart/formdata . The docs have an example


I'd agree with azadi and recommend the dirWatcher event gateway to process when files are present. the upload time can't be reduced but you can do something similar to what youtube does. "Your upload is being processed. Please check back later".





 

by: jtannerPosted on 2009-10-22 at 14:52:38ID: 25639449

Thankyou both for the current comments, with regards to uploading, thats not an issue, as uploadify does an ajax call so the file itself is uploaded as the use fills in the form (the image is the first item to be loaded).  Uploadify also proved a nice progress bar as well, so that part is covered.

Its 100% the resizing that causes the pause (as the form cant be submitted until uploadify has completed the upload)...

this is why i though cfx_http might do the job as i can just send the request off and carry on.  afterall, the file is already uploaded by this time, i just need to resize it etc.  Imagine it like PayPal IPN - eg, the processing is done behine the scenes with no "user face" so to speak.

:)

 

by: SidFishesPosted on 2009-10-23 at 07:14:53ID: 25644639

the reason we've both suggested the event gateways is that nothing from the client side needs to happen once the upload is complete. the cfx won't do that for you (any more than a behind the scenes ajax call would do)

What you should do is have your upload function complete without resizing and pass control back to the user -without- any further manipulation. The dirWatcher event gateway will recognize when a new file is present and start the resize process..but this is completely transparent to the user. They could have moved on to a completely different site while the processing is taking place. The processing can take x amount of time and when it's done you can move it with cffile, update a db entry to show it's complete or whatever

You can do all of this with a scheduled task as well, but I prefer the gateway as it is tied to the actual upload rather than a batch mode. This might be a little easier on the server as image processing is done as needed rather than all at once.

 

by: azadisaryevPosted on 2009-10-23 at 07:34:09ID: 25644793

the only problem i ever had with employing an event gateway like directory watcher was that sometimes - very rarely, but it is possible - it would pick up a partial file in the directory (one that has not been moved over completely) and try to process it, which resulted in an error... that's why i settled for a scheduled task instead, which processed only files older than 3 minutes ago...

mind you though, that was a dirwatcher gateway that kept track of a folder that a site admin could upload files to using FTP, not HTTP post... maybe with http post this does not happen...

Azadi

 

by: jtannerPosted on 2009-10-23 at 07:46:29ID: 25644911

Oh ok.  The problem i have with a DirWatcher is that the files are specific to a user and are placed within a user folder automatically, (which are created on signup/profile submission)

I guess i could put code in the dirwatcher to match the filename in the database, and then resize and move to the appropriate folder.

I dont think partial files will be an issue, and the file will have already completed upload..... guaranteed! :)

 

by: azadisaryevPosted on 2009-10-23 at 07:58:16ID: 25645023

you could, during file upload (well, really during cf moving the uploaded file from a temp dir to designated folder) rename the file to include unique user identifier(s) in the filename. then your dirwatcher gateway could move the file to appropriate folder after resizing/whatever based on the filename....

in this case you would upload all files to one same directory on your server, preferably outside of web root to avoid the recently rampant successful hacking attempts.

Azadi

 

by: jtannerPosted on 2009-10-23 at 08:10:23ID: 25645150

lol i would never allow uploads to webroot, i always asign a folder such as UserUploads for examples that is purely for uploaded files, and the dir does NOT have execute permissions either =)

I actually thought this would be an easy task lol! well is there a way to show a dialog or light window after submission that could just show a "please wait" type message.

My action code is below: (well psuedo_code)

<cfif IsDefined("form.goodtogo")>
<!---
If this page is submitted, update database, resize images....once done, cflocation to step 2
--->
</cfif>

I am using Lightview (found here: http://www.nickstakenburg.com/projects/lightview/) in my project but for the love nor money can i get it to show using the $LightView.show function after <cfif IsDefined("form.goodtogo")>.  I thought if i could just get one to show, it would be fine as the code then changes the page location (and would obv cause the lightview to close).....but i cant even get it to show after submit.

Any thoughts or ideas?

Many thanks again for all the help so far

James

 

by: SidFishesPosted on 2009-10-23 at 09:04:25ID: 25645744

"I guess i could put code in the dirwatcher to match the filename in the database, and then resize and move to the appropriate folder."

that is exactly what I would do

If the EG writes the the file info to the db i'd set a processing flag and then have the client do an ajax call to check that flag every 30sec or so...when img processing is complete, cffile the img to the user dir, set the flag to off and when the ajax call hits, update the browser to show complete


btw...I would not add a "Please Wait"...I'd use a Processing indicator

people don't like to wait but they don't mind if something is processing ;)


 

by: jtannerPosted on 2009-10-23 at 09:25:47ID: 25645936

ah yes, i was thinking of the classic pinwheel ajax loading.gif type image =)

Right, ok, so, my thoughts on a dirwatcher may be abit off, so i wonder if i could enlist some code help now.

Im figuring something like: ....erm well actually, i dont have a clue,  i guess every second (example sake atm - when in full production this site could be getting a lot of uploads) in scheduler, i have a cfm page that creates a list of files in the director, then loops the list, resizing and moving the images to the appropriate users dir??

 

by: SidFishesPosted on 2009-10-23 at 09:43:47ID: 25646122

"was thinking of the classic pinwheel ajax loading.gif type image =)"

You could still do that since all that is is showing and hiding an image..just hide it when the ajax call says done

This should get you started

http://www.coldfusionjedi.com/index.cfm/2007/10/29/DirectoryWatcher-and-ColdFusion-Image-Manipulation-Example

if you need anything more specific just ask

 

by: jtannerPosted on 2009-10-23 at 09:49:18ID: 25646187

@SidFishes,

Looks interesting, im about to head home for the weekend so i will check it out monday when im back at work and post my progress

Many thanks =)

J

 

by: jtannerPosted on 2009-10-26 at 03:46:51ID: 25660974

Hiya,

Ive realised that dire watcher will be great for a different part of my site, but just wont quite work for what i want right now.

Is there a way to "Call" a page -- Azadi mentioned <cfthread> -- instead of including it?

 

by: azadisaryevPosted on 2009-10-26 at 11:41:23ID: 25665343

yes, a <cfthread>, or even a scheduled task, should be good for the job.

after the images are uploaded, you can, as Sid said, add records about these images to a designated db table, then use cftread or schedule a task that runs a page which queries the db for new images, processes them as necessary and moves to final destination, then marks the images' records as processed. you can use this flag to show status to the user, if necessary.

Azadi

 

by: jtannerPosted on 2009-10-27 at 03:13:59ID: 31646371

All of the above helped in.  For the exact problem i had here, i managed to do what i wanted, by 1) using a much better image library from efflare which cut down the times by alot, and 2) i used jQuery Binded to the form submit so that i managed to get a modal window showing after clicking submit... The pause is now only 3.5 - 4 seconds regardless of file size and is acceptable under the guides i have to work within =)

The help above like the DirWatcher etc WILL be used elsewhere in my projects though so i have learned much from this post

Thanks to all :)

 

by: jtannerPosted on 2009-10-27 at 03:15:58ID: 25670688

jQuery incase any wants to know:

jQuery(document).ready(function() {
    jQuery('form').submit(function() {//<- Submit event
      Lightview.show({href: 'http://theindustrypod.com.mytempdomain.com/pages/loading.cfm',rel: 'iframe', options: {width: 400,height: 100}});
    });
});

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...