在 Windows 上,此函數不適用於使用 proc_open 開啟的管道(https://bugs.php.net/bug.php?id=47918, https://bugs.php.net/bug.php?id=34972, https://bugs.php.net/bug.php?id=51800)
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
stream_set_blocking — 設定串流的阻塞/非阻塞模式
設定 stream
的阻塞或非阻塞模式。
此函數適用於任何支援非阻塞模式的串流(目前為一般檔案和通訊端串流)。
注意:
在 Windows 上,這對本地檔案沒有影響。Windows 不支援本地檔案的非阻塞 IO。
在 Windows 上,此函數不適用於使用 proc_open 開啟的管道(https://bugs.php.net/bug.php?id=47918, https://bugs.php.net/bug.php?id=34972, https://bugs.php.net/bug.php?id=51800)
當您在非阻塞串流上使用 fwrite() 時,資料不會像 t dot starling 所說的那樣被靜默丟棄。
請記住,fwrite() 會返回一個整數,這個整數代表實際寫入到串流的資料量。因此,如果您看到 fwrite() 返回的值小於寫入的資料量,則表示您將來必須再次呼叫 fwrite() 以寫入剩餘的資料量。
您可以使用 stream_select() 等待串流可供寫入,然後繼續將資料寫入到串流。
非阻塞串流很有用,因為您可以擁有多個非阻塞串流,並等待它們可供寫入。