![]() |
Chilkat • HOME • Android™ • AutoIt • C • C# • C++ • Chilkat2-Python • CkPython • Classic ASP • DataFlex • Delphi DLL • Go • Java • Node.js • Objective-C • PHP Extension • Perl • PowerBuilder • PowerShell • PureBasic • Ruby • SQL Server • Swift • Tcl • Unicode C • Unicode C++ • VB.NET • VBScript • Visual Basic 6.0 • Visual FoxPro • Xojo Plugin
(PHP ActiveX) Thread Pool SizeDemonstrates how to set the maximum number of threads in Chilkat's thread pool manager. Also demonstrates how to set a thread pool log file for help in diagnosing unexpected problems.
<?php // All Chilkat classes can be unlocked at once at the beginning of a program // by calling UnlockBundle. It requires a Bundle unlock code. // For versions of Chilkat < 10.0.0, use new COM('Chilkat_9_5_0.Chilkat.Global') $chilkatGlob = new COM("Chilkat.Global"); $success = $chilkatGlob->UnlockBundle('Anything for 30-day trial.'); if ($success != 1) { print $chilkatGlob->LastErrorText . "\n"; exit; } // Set the maximum number of threads in the Chilkat thread pool to 12. // This means that no more than 12 background worker threads will exist simultaneously. // If more than 12 tasks are queued then some must wait for a worker thread to become free. // Note: The Chilkat thread pool manager thread is a thread distinct from the // worker threads. It starts when the 1st asynchronous task is Run. $chilkatGlob->MaxThreads = 12; // Also, the ThreadPoolLogPath can be set to cause the thread pool manager thread to // keep a log file. This is for the purpose of debugging if unexpected problems occur. $chilkatGlob->ThreadPoolLogPath = '/home/users/chilkat/logs/threadPoolLog.txt'; // For versions of Chilkat < 10.0.0, use new COM('Chilkat_9_5_0.Chilkat.Http') $http1 = new COM("Chilkat.Http"); // For versions of Chilkat < 10.0.0, use new COM('Chilkat_9_5_0.Chilkat.Http') $http2 = new COM("Chilkat.Http"); // For versions of Chilkat < 10.0.0, use new COM('Chilkat_9_5_0.Chilkat.Http') $http3 = new COM("Chilkat.Http"); $url1 = 'http://www.marcusmiller.com/'; $url2 = 'http://www.tromboneshorty.com/'; $url3 = 'http://www.jamesmorrison.com/'; // Call the async version of the QuickGetStr method to return a task object. // The task object is loaded, but is in the Inert state -- meaning it is // not yet scheduled to run on Chilkat's background thread pool. // task1 is a Chilkat.Task $task1 = $http1->QuickGetStrAsync($url1); if ($http1->LastMethodSuccess == 0) { print $http1->LastErrorText . "\n"; exit; } // task2 is a Chilkat.Task $task2 = $http2->QuickGetStrAsync($url2); if ($http2->LastMethodSuccess == 0) { print $http2->LastErrorText . "\n"; exit; } // task3 is a Chilkat.Task $task3 = $http3->QuickGetStrAsync($url3); if ($http3->LastMethodSuccess == 0) { print $http3->LastErrorText . "\n"; exit; } // At this point we have 3 task objects, each loaded with a Chilkat method call. // Note: At this point no background threads are running. The thread pool manager // thread is not started -- it will start when the very first task is Run. // Schedule each task for running on the thread pool. This changes each task's state // from Inert to Live. The thread pool manager thread starts with the 1st task queued. // If the Global.ThreadPoolLogPath property was set, then // the log file would be created (or appended) at this point. $success = $task1->Run(); // Assuming success for brevity... $success = $task2->Run(); $success = $task3->Run(); // The application is now free to do anything else // while the HTML at the URL's are being downloaded in background threads. // In this case, we'll just wait for all three tasks to finish. // All three tasks are running simultaneously in separate background threads. // We can wait for each in any order. If Wait is called and the task has already // finished (or been canceled), then the Wait method returns immediately. $maxWaitMs = 20000; $success = $task1->Wait($maxWaitMs); $success = $task2->Wait($maxWaitMs); $success = $task3->Wait($maxWaitMs); // Assuming success for brevity... $err = 'Task failed or canceled'; $html1 = $err; $html2 = $err; $html3 = $err; // Now get the HTML downloaded in each task: if (($task1->StatusInt == 7) and ($task1->TaskSuccess == 1)) { $html1 = $task1->getResultString(); } if (($task2->StatusInt == 7) and ($task2->TaskSuccess == 1)) { $html2 = $task2->getResultString(); } if (($task3->StatusInt == 7) and ($task3->TaskSuccess == 1)) { $html3 = $task3->getResultString(); } print $html1 . "\n"; print '----' . "\n"; print $html2 . "\n"; print '----' . "\n"; print $html3 . "\n"; print '----' . "\n"; ?> |
||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.