在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.starling所说的那样被静默丢弃。
记住fwrite()返回一个整数,这个整数表示实际写入流的数据量。因此,如果你看到fwrite()返回的数据量小于写入的数据量,这意味着你将来必须再次调用fwrite()来写入剩余的数据量。
你可以使用stream_select()来等待流可用于写入,然后继续向流写入数据。
非阻塞流很有用,因为你可以拥有多个非阻塞流,并等待它们可用于写入。