PHP Streams中的阻塞和非阻塞模式

ama*_*sta 10 php stream

我正在攻读PHP 5认证考试.练习考试中提到了这个功能.

function stream_set_blocking():

在流上设置阻塞或非阻塞模式.

此函数适用于支持非阻塞模式的任何流(当前,常规文件和套接字流).

从高级别和低级别的角度来看,阻塞模式和非阻塞模式流如何在PHP中表现?什么是套接字流和非套接字流?赞赏的例子.

mar*_*rio 28

阻塞/非阻塞模式表示fread/fwrite函数是否会立即返回.进入时non-blocking mode,他们将返回任何可用数据.如果在调用函数时没有数据可以读取,则不会返回任何数据.这种流在循环中被典型地轮询.

blocking mode但是,函数总是等待(并因此阻止你的程序的执行),直到它能够满足完整的读请求.如果您要求从网络套接字读取1MB,则该函数将在收到1MB传递后才会返回.

我认为维基百科非常清楚:http:
//en.wikipedia.org/wiki/Berkeley_sockets#Blocking_vs._non-blocking_mode

它主要对网络文件/流源有影响.对于本地文件系统,操作系统将始终读取所需的数据长度.PHP也有流包装器,它可以自行决定处理该选项(没有可靠的通用规则).

有关更多低级别的详细信息,请访问fnctl(2)或socket(2)或http://www.scottklement.com/rpg/socktut/nonblocking.html的联机帮助页