1、创建
socket_create(int $domain, int $type, int $protocol);
$domain : 可选值,AF_INET , AF_INET6, AF_UNIX
$type :可选值 SOCK_STREAM,SOCK_DGRAM,SOCK_SEQPACKET,SOCK_RAW,SOCK_RDM,
$protocol:可选值 SOL_TCP,SOL_UDP,SOL_ICMP
2. 绑定
socket_bind(resource $socket, string $address[, int port = 0]);
eg: socket_bind($socket, 'localhost', 1337);
3. 监听
socket_listen(resource $socket [, int $backlog=0]);
4.设置为阻塞模式
socket_set_block(resource $socket);
非阻塞是指函数操作在不能立刻得到结果之前,不会阻塞当前的线程,而会立即返回。而阻塞是指干不完就不准回来,必须得到对方的回应后才能继续下一步操作。特别是当用户比较多时,设置成非阻塞是很必要的。如果是阻塞模式,若两个前端同时连接上,服务器端在处理一个前端请求时,另外一个前端的请求就会被阻塞,只有等到前一个前端的事情处理完了之后,后一个前端的请求才会被响应。
5. 向socket中写入指定大小的缓冲数据
socket_write(resource $socket, string $buffer [, int $length =0]);
6. 从socket中读取指定字节长度的数据
socket_read(resource $socket, int $length[, int $type= PHP_BINARY_READ]);
7.实现一个持久的socket连接 长连接。返回句柄。与fsockopen的区别在pfsockopen建立的连接,在脚本执行完毕后,并不会断开
pfsockopen(string $hostname [,, int $port= -1 [, int &errno [, string &errstr [, float $time_out= ini_get("default_socket_timeout")]]]]);