當設定socket為非阻塞時,fread或者fgets函式會立即回傳結果,而不需要等待有輸入,測驗程序可以使用vscode的debug模式來進行
當不設定這一項時,如果客戶端沒有輸入會一直阻塞在這里等待客戶端的輸入,當加上這個設定后就不會在這等著了
測驗代碼
<?php $main_socket = stream_socket_server("tcp://0.0.0.0:8888", $error_code, $error_msg) or die('create server failed'); while(1) { set_error_handler(function(){}); $new_socket = stream_socket_accept($main_socket, 5, $remote_address); restore_error_handler(); if(!$new_socket) continue; //屏蔽或開啟本行代碼進行除錯 stream_set_blocking($new_socket, 0); $request = fread($new_socket, 8192); var_dump($request); }

客戶端連接上后沒有輸入直接會執行到這一步
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/100281.html
標籤:PHP
上一篇:Fatal: Unable to open file 'SPCOMM2010.LIB',如何處理!
下一篇:bcb6又沾光了
