php socketsetnonblock,socket_set_nonblock()

socket_set_nonblock()

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

Sets nonblocking mode for file descriptor fd

说明socket_set_nonblock(resource$socket):bool

The socket_set_nonblock() function sets the O_NONBLOCK flag on the socket specified by the$socketparameter.

When an operation(e.g. receive, send, connect, accept,...)is performed on a non-blocking socket, the script will not pause its execution until it receives a signal or it can perform the operation. Rather, if the operation would result in a block, the called function will fail.

参数$socketA valid socket resource created with socket_create() or socket_accept().

返回值

成功时返回TRUE,或者在失败时返回FALSE。

范例

socket_set_nonblock() example<?php

$socket = socket_create_listen(1223);

socket_set_nonblock($socket);

socket_accept($socket);

?>

This example creates a listening socket on all interfaces on port 1223 and sets the socket to O_NONBLOCK mode.socket_accept() will immediately fail unless there is a pending connection exactly at this moment.

参见Beware, when using this function within a loop (i.e. a demon with a socket). The socket_accept(), for example, emits a warning each time there is no incoming connection available to be read. My php error log file got huge in a matter of seconds, eventually crashing the server.

Of course, i used the @ before the function to take care of that problem.

[EDITOR: One can (and should) use socket_select to detect a new connection on a socket (it's a "readable" event)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值