2 回答

TA貢獻1784條經驗 獲得超8個贊
看看最簡單的 Singleton 實現:
class Singleton {
protected static $_instance = null;
public static function newInstance()
{
if (null === self::$_instance)
{
self::$_instance = new self;
}
return self::$_instance;
}
// disallowed
protected function __clone() {}
// disallowed
protected function __construct() {}
}
它確保在這個單一的請求中只存在一個這樣的實例。
所以你的 Swift_SmtpTransport 是一個單例:
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl');
這意味著Swift_SmtpTransport 的每個實例都是您剛剛創建的實例(針對此請求)(這并不意味著您不能更改屬性 - 也許該實例在創建后具有要調用的 getter 和 setter)。
現在讓我們看看你已經發現了什么:
在一個 Request 中創建的 Singleton 正是為了那個請求而存在的。
所以它是每個請求,請求也不會影響其他請求。所以不,我不認為其他用戶會受到影響。即使您根據單個請求更改配置也不會。
有關更多信息,請閱讀:對 PHP 腳本的同步請求- 對于每個請求,一個新的獨立進程被分叉,與其他進程沒有任何關系。唯一的問題是他們可能會互相阻止。
Laravel 的文檔說:
在運行時設置的配置值僅針對當前請求設置,不會被帶到后續請求中。

TA貢獻1808條經驗 獲得超4個贊
在傳統的 php 中,每個請求都是一個不同的實例。從一個實例到另一個(從一個請求到另一個)繼承(變量明智)沒有任何東西。
在同一個實例中,郵件程序在其生命周期內是一個單身人士
- 2 回答
- 0 關注
- 180 瀏覽
添加回答
舉報