<?php
// 繼承 Thread 的類具有建立執行緒的能力
class Request extends Thread
{
public $str;
public $i;
public function __construct($i)
{
$this->i = $i;
}
public function run()//覆蓋重寫run 方法 執行執行緒任務
{
if ($this->i == 3) {//如果執行緒是第三個的時候
sleep(5);//延遲5秒
} else {
sleep(1);
}
$this->str = $this->i;
}
}
$arr = [];
//同時建立3個執行緒
for ($i = 0; $i <= 3; $i++) {
$request = new Request($i);
$arr[$i] = $request;
// 建立新執行緒,隨後執行緒會執行 run 方法
if (! $request->start()) {
die("Start thread failed\n");
}
echo "Thread({$i}) started\n";
}
for ($i = 0; $i <= 3; $i++) {
// join 是阻塞的,所以指令碼執行時間取決於耗時最長的執行緒
if (! $arr[$i]->join()) {
die("Join failed\n");
}
echo $arr[$i]->str . PHP_EOL;
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結