class test extends Thread {
public $arg;
public function __construct($arg){
$this->arg = $arg;
}
public function run(){
if($this->arg){
sleep(1);
echo "Hello " . $this->arg .':'. date("Y-m-d H:i:s") . "<br>";
sleep(1);
// file_put_contents("./log.txt", date("Y-m-d H:i:s") . "I Am SonPthread" . "\r\n", FILE_APPEND);
}
}
}
$thread = new test("World");
echo "Start Pthread:" . date("Y-m-d H:i:s") . "<br>";
sleep(1);
$thread->start();
/*
* Hello World:2017-07-20 11:22:29
* Start Pthread:2017-07-20 11:22:27
* main thread:2017-07-20 11:22:28
*/
if($thread->start()){
$thread->join();
}
/*
* Hello World:2017-07-20 11:23:23
* Start Pthread:2017-07-20 11:23:21
* main thread:2017-07-20 11:23:24
*/
echo "main thread:".date("Y-m-d H:i:s") . "<br>";;
file_put_contents("./main.txt", date("Y-m-d H:i:s") . ":Main Thread!" . "\r\n", FILE_APPEND);
echo "<br>";
join方法的作用是让当前主线程等待该线程执行完毕
确认被join的线程执行结束,和线程执行顺序没关系。
也就是当主线程需要子线程的处理结果,主线程需要等待子线程执行完毕
拿到子线程的结果,然后处理后续代码。
官方文档链接地址:http://www.php.net/manual/en/book.pthreads.php