Chilkat HOME ASP Visual Basic VB.NET C# Visual C++ C MFC Delphi FoxPro Java Perl PHP Python Ruby SQL Server VBScript
|
HTTP in a Background Thread (Asynchronous HTTP)This example shows the technique one would follow to run any Chilkat HTTP method in a background task. (Only HTTP methods that communicate with an HTTP server are background-enabled. Methods that perform no HTTP communications return immediately and never need to be backgrounded.)
use chilkat; $http = new chilkat::CkHttp(); # Any string unlocks the component for the 1st 30-days. $success = $http->UnlockComponent("Anything for 30-day trial"); if ($success != 1) { print $http->lastErrorText() . "\n"; exit; } # To run an HTTP method asynchronously in a background thread, set # the UseBgThread property equal to 1 $http->put_UseBgThread(1); # For those programming languages that support event callbacks: # events are not fired when a task is running in the background thread. # Instead, Chilkat has added the "event log" mechanism. While the # background task is running, events that normally would've been fired # are accumulated in the event log. Your application may periodically check # the event log to keep track of the progress of the background task. # To enable event logging, set the KeepEventLog property = 1 $http->put_KeepEventLog(1); # Start an asynchronous HTTP download in a background thread. # The method will return cktrue if the task was successfully started. # Note: When the UseBgThread property = 1, all methods involving # HTTP communications will be asynchronous. These methods include: # SynchronousRequest, QuickGetStr, QuickGet, PostUrlEncoded, XmlRpc, # XmlRpcPut, QuickPutStr, QuickGetObj, QuickDeleteStr, PutText, # PutBinary, PostBinary, PostMime, GetHead, DownloadAppend, etc. $success = $http->Download("http://www.chilkatsoft.com/download/ChilkatJava.zip","ChilkatJava.zip"); if ($success != 1) { print $http->lastErrorText() . "\r\n"; exit; } else { print "Initiated asynchronous HTTP download..." . "\r\n"; } # Write a loop to wait for the background task to complete. # Your application would typically do something different than this -- # after all... there's no point in doing the task asynchronously if your application # is simply going to wait for it to complete -- that's the same as doing it synchronously, # and that could've been achieved by a single call to the http.Download method # with the UseBgThread = 0. # However... we do this here for the purpose of demonstration... while (($http->get_BgTaskRunning() == 1)) { # Show the events in the event log that have accumulated so far... $n = $http->get_EventLogCount(); if ($n > 0) { for ($i = 0; $i <= $n - 1; $i++) { print $http->eventLogName($i) . ": " . $http->eventLogValue($i) . "\r\n"; } $http->ClearEventLog(); } # In some programming languages, you might wish to handle user-interface events # For example, in C# you might call Application.DoEvents() # Sleep .1 seconds -- to keep the CPU from being 100% busy... $http->SleepMs(100); } # Once the background task has completed, check it for success/failure: if ($http->get_BgTaskSuccess()) { print "Background task completed successfully." . "\r\n"; } |
© 2000-2010 Chilkat Software, Inc. All Rights Reserved.