Exemple #1
0
  Advanced  usage
*/
require_once "ThreadQueue.php";
// function is a static method of a class
abstract class class1
{
    static function parallel_task($arg)
    {
        echo "task with parameter '{$arg}' starts\n";
        sleep(rand(2, 5));
        // wait for random seconds
        echo "task with parameter '{$arg}' ENDS\n";
    }
}
// we want 3 jobs in parallel instead of the default 2
$TQ = new ThreadQueue("class1::parallel_task", 3);
// add tasks
$TQ->add("one");
$TQ->add("two");
$TQ->add("three");
$TQ->add("four");
$TQ->add("five");
$TQ->add("six");
// Oops! We changed our mind, let's remove awaiting jobs.
// Existing threads will run, but jobs not started will be removed.
$TQ->flush();
// let's add jobs again.
$TQ->add("seven");
$TQ->add("eight");
$TQ->add("nine");
$TQ->add("ten");
Exemple #2
0
/*

  Basic usage
for beginners: it is for command-line only execution. Webservers do not support threads.
*/
require_once "ThreadQueue.php";
// it is the function that will be called several times
function parallel_task($arg)
{
    echo "task with parameter '{$arg}' starts\n";
    sleep(rand(2, 5));
    // wait for random seconds
    echo "task with parameter '{$arg}' ENDS\n";
}
// create a queue instance with a callable function name
$TQ = new ThreadQueue("parallel_task");
// add tasks
$TQ->add("one");
$TQ->add("two");
$TQ->add("three");
$TQ->add("four");
$TQ->add("five");
// wait until all threads exit
while (count($TQ->threads())) {
    // there are existing processes in the background?
    sleep(1);
    // optional
    echo "waiting for all jobs done...\n";
    $TQ->tick();
    // mandatory!
}