<?php define('MY_CONSTANT', true); function test() { } class Foobar { } class Example extends Thread { public function run() { var_dump(defined('MY_CONSTANT')); var_dump(function_exists('test')); var_dump(class_exists('Foobar')); } } // true true true $job = new Example(); $job->start(); // default argument is PTHREADS_INHERIT_ALL $job->join(); // false false true $job = new Example(); $job->start(PTHREADS_INHERIT_CLASSES); $job->join(); // true true true $job = new Example(); $job->start(PTHREADS_INHERIT_CLASSES | PTHREADS_INHERIT_CONSTANTS | PTHREADS_INHERIT_FUNCTIONS); $job->join();
<?php require 'vendor/autoload.php'; class Example extends Thread { public function run() { dump('foobar'); } } // Faulty example ////////////////////////////////////////////////////////////////////// $job = new Example(); $job->start(); $job->join(); // Now let's fix our example ////////////////////////////////////////////////////////////////////// class AutoloadingWorker extends Worker { public function run() { require 'vendor/autoload.php'; } } // Create our worker and stack our job on it $worker = new AutoloadingWorker(); $job = new Example(); $worker->stack($job); $worker->start(); $worker->join(); // Or use a pool and specify our custom worker