1. 程式人生 > >PHP pthread多線程

PHP pthread多線程

world public 主線程 當前 join() cnblogs () pub brush

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

PHP pthread多線程