[dev] [commits] Horde branch develop updated. 1e74759a311a275c4a8bf536bec415bd62c37df7

Michael J Rubinsky mrubinsk at horde.org
Thu Nov 17 22:00:43 UTC 2011


Quoting Chuck Hagenbuch <chuck at horde.org>:

> Quoting "Michael J. Rubinsky" <mrubinsk at horde.org>:
>
>>    This now seems to work only when using the Ajax uploader. When using the
>>    traditional uploader, the browser is directed back to the  
>> gallery before the
>>    task is finished running, and this kills the request....
>
> Maybe we need something like ignore_user_abort() in the shutdown  
> runner? As well as session_write_close() of course, which I don't  
> think we have yet.

Yeah, I got that far regarding ignore_user_abort(). There was a larger  
problem though, in that triggering the task runner from __destruct()  
gives us absolutely no control over when it is run in relation to  
other objects being gc'd. For instance, I was running into the problem  
of things like $registry and $prefs not being available during task  
execution.

I changed the code to register the tasks to run with a  
register_shutdown_function. This ensures all (most?) needed objects  
are still around since this is one of the first shutdown_functions  
registered. The drawback to this is that the browser will still spin  
during execution.  I've tried a number of ways of killing the  
connection like e.g., sending the connection: close header, flushing  
the buffer etc.., but all of them have resulted in communication  
errors in the browser. I don't think we can kill the session from the  
shutdown_function either, as we have no way of knowing if another  
shutdown function in the chain will want to do something with it.

At least now all the tasks are run, with most of the Horde environment  
available for the tasks...

-- 
mike

The Horde Project (www.horde.org)
mrubinsk at horde.org



More information about the dev mailing list