I have a PHP script batch process a bunch of images, the
image id are stored in a php session array.
When a user submit the flex form the batch process is called
and php loops through image id's in the session.
Each turn of the loop could take 2-5 minutes to process the
images (acceptable for what its doing).
This works fine no issues. But as the number of images could
be 1 to n number, I wanted to show a progress bar.
So I made a session variable thats holds the index of the
Create another httpservice with its own url and its own
response. The url calls a php function that just echos back the
index inside the session variable.
I created a timer to call this 2nd httpservice every 5
seconds. The idea is that I receive the index number and apply it
to the progress bar.
The problem is although I call the 2nd httpservice, I get no
returns until the first httpservice as finished. Then all the
returns com in at once far to late.
Flex communicates asynchronously meaning that only one call
can be made at a time before the next call is performed. It allows
you to cancel the request if needed.
What you are trying to do with the second call in trying to
get the index will not return until your initial call is made. So
what your are experiencing is exactly how Flex was designed.
A possible solution would be to have your Flex UI make 1 - x
number of calls and maintain the index at the UI level. In short,
get the image_id list from the session and store them in a local
Flex variable and run multiple calls from flex for each image_id in
the list. Each time a process is finished the result listener would
execute the next image_id for processing. That way you could
respond with a progress bar or message as to the image being
Obviously this takes the batch processing off the server and
puts it to the client and it may very well not be
Not a bad idea actually, I already know in flex the total
number of images to be processed, so instead of running the for
next loop in PHP I can send an index number with with the call.
Then just call the session array via the index sent.