This article brings you relevant knowledge about php socket, which mainly introduces IO multiplexing and how php socket implements web server? Friends who are interested can take a look below. I hope it will be helpful to everyone.
Multiplexing

selectandepoll, common In the software,Apacheuses theselectmodel, andnginxuses theepollmodel. Theselectmodel is built into php, and the corresponding function issocket_select. Multiplexing is the basis for implementing the http server.
socket_selectfunction that implements theselectmodel. Its syntax is as follows:
socket_select( array &$read, array &$write, array &$except, int $seconds [, int $microseconds = 0]): int|false
read
The socket_selectfunction will return (otherwise it will continue to block), and at the same time modify the variable to the socket resource list of the current event (received message or client connection or disconnection), and continue to execute downwards.
write
nullmeans that you don’t care whether there are any write changes.
except
nullis "listening" All
seconds
nullis passed in, it will block, and if it is 0, it will be non-blocking. If it is >0, it will be the maximum blocking time
microseconds
Copy after login
socket_selectfunction will block the current process. When the$tmp_socketssocket resource in the array has new When the client connects or disconnects or receives a new message, it will modify the$tmp_socketsarray to the currently active socket resource, and then process the business logic by traversing the array

Use socket to implement a simple http server
http protocol specifies the specified data format based on socket, so we only need tosocket_writeWhen sending data according to the format, the browser can respond to the request normally
this is php worker'; $len = strlen($output); $response = "HTTP/1.1 200 OK\r\n"; $response .= "content-type: text/html\r\n"; $response .= "server: php socket\r\n"; $response .= "Content-Length: {$len}\r\n\r\n"; $response .= $output; socket_write($sock, $response); } } }
ip:8888in the browser, you can see the following:

GET / HTTP/1.1 Host: 124.222.**.**:8888 Connection: keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: jenkins-timestamper-offset=-28800000; _ga=GA1.1.1403944751.1652010033; _ga_2GM6102E19=GS1.1.1652802985.7.1.1652803014.0
file_get_contentRead the content of the specified file and return it to the browser
Recommended learning: "PHP Video Tutorial"
#The above is the detailed content of IO multiplexing of PHP+Socket series and implementation of web server. For more information, please follow other related articles on the PHP Chinese website!