လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> ဖန်ရှင်အမျိုးအစားများ> socket_select

socket_select

သတ်မှတ်ထားသောအချိန် timeout socket array ပေါ်တွင် Select () စနစ်ခေါ်ဆိုမှုကို run ပါ
အမည်:socket_select
အမျိုးအစား:Sockets
programming language:php
တစ်ကြောင်းဖြင့်အကျဉ်းချုပ်:i / o စစ်ဆင်ရေးကို sockets များပေါ်တွင်ပိတ်ဆို့ခြင်းကိုပိတ်ဆို့ခြင်း

function name: Socket_select ()

သက်ဆိုင်သောဗားရှင်း - PHP 4> = 4.3.0, PHP 5, PHP 7

function ကိုဖော်ပြချက် - socket_select () function ကို () function ကို socket setchets အပေါ် / o စစ်ဆင်ရေးမြှောက်ဖို့အသုံးပြုသည်။ မည်သည့် Sockets တွင်မည်သည့် sockets များရှိသည်ကိုဆုံးဖြတ်ရန်တစ်ပြိုင်နက်တည်း socket မျိုးစုံကိုတစ်ပြိုင်တည်းကြည့်ရှုနိုင်သည်။ ဤလုပ်ဆောင်ချက်သည် operating system မှပေးသော Select System Call မှ အခြေခံ. ရွေးချယ်သည်။

Syntax: Int Socket_select (array & array & array & array & array), array & array & $ tv_sec [int $ tv_usec = 0))

Parametermer

  • $ ဖတ်ရန် - ဖတ်ရှုသည့်အဖြစ်အပျက်များကိုစောင့်ကြည့်ရန်လိုအပ်သည့် sockets တစ်ခု။
  • $ ရေးရန် - ရေးရာဖြစ်ရပ်များကိုစောင့်ကြည့်ရန်လိုအပ်သော societ များပါ 0 င်သည့်နေရာတစ်ခု။
  • $ မှလွဲ။ - ခြွင်းချက်ဖြစ်ရပ်များကိုစောင့်ကြည့်ရန်လိုအပ်သည့် socket တစ်ခုခင်းကျင်း။
  • $ tv_sec: စက္ကန့်ပိုင်းအတွင်းအချိန်ကုန်အချိန်။ 0 ဆိုပါက၎င်းသည်အဆုံးမဲ့စောင့်ဆိုင်းခြင်းကိုဆိုလိုသည်။
  • $ tv_usec: အချိန်ကုန်အချိန်၏ microsecond အစိတ်အပိုင်း။ ပုံမှန်တန်ဖိုး 0 ဖြစ်ပါတယ်။

Value ကိုပြန်သွားပါ

  • အနည်းဆုံး socket တစ်ခုသည်စာဖတ်ခြင်းအတွက်အဆင်သင့်ဖြစ်လျှင်, စာဖတ်ခြင်း,
  • အချိန်ကုန်အချိန်ရောက်လျှင်ပြန်လာတန်ဖိုးသည် 0 ဖြစ်သည်။
  • အမှားတစ်ခုဖြစ်ပါက Return Value မှာ -1 ဖြစ်သည်။

ဥပမာ -

 $serverSocket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_bind($serverSocket, '127.0.0.1', 8888); socket_listen($serverSocket); $clientSockets = array($serverSocket); $write = $except = array(); while (true) { $read = $clientSockets; // 用于监视读事件的socket数组// 使用socket_select()等待事件发生if (socket_select($read, $write, $except, 0) < 1) { continue; } // 检查是否有新的客户端连接if (in_array($serverSocket, $read)) { $clientSocket = socket_accept($serverSocket); $clientSockets[] = $clientSocket; echo "New client connected." . PHP_EOL; // 从读事件数组中移除服务器socket $key = array_search($serverSocket, $read); unset($read[$key]); } // 处理已连接的客户端发送的数据foreach ($read as $clientSocket) { $data = socket_read($clientSocket, 1024); if ($data === false) { // 客户端断开连接$key = array_search($clientSocket, $clientSockets); unset($clientSockets[$key]); socket_close($clientSocket); echo "Client disconnected." . PHP_EOL; } else { // 处理客户端发送的数据echo "Received data: " . $data . PHP_EOL; } } } // 关闭服务器socket socket_close($serverSocket);

အထက်ပါဥပမာသည် Multiplexing ကိုအကောင်အထည်ဖော်ရန် Socket_select () function ကိုအသုံးပြုသောရိုးရှင်းသော TCP server တစ်ခုကိုပြသသည်။ ကွင်းဆက်တွင်ဤအဖြစ်အပျက်ကို Socket_select () ပေါ်ပေါက်လာရန်စောင့်ပါ။ ဤနည်းလမ်းသည် client connections မျိုးစုံကိုတစ်ပြိုင်နက်တည်းကြိုးတစ်ချောင်းဖြင့်တစ်ပြိုင်တည်းကိုင်တွယ်နိုင်သည်။

သက်ဆိုင်သောဖင်ခှ်ရှင်းများ
  • နာမည်ကို socky ထဲသို့ချည်နှောင်ပါ socket_bind

    socket_bind

    နာမည်ကိုsockyထဲသို့ခ
  • cocket တစ်ခုမှဒေတာများကိုလက်ခံရရှိသည်ဖြစ်စေ, socket_recvfrom

    socket_recvfrom

    cocketတစ်ခုမှဒေတာမျာ
  • Socket_set_option အတွက် alias ကို socket_setopt

    socket_setopt

    Socket_set_optionအတွ
  • socket အရင်းအမြစ်များပေါ်တွင်ပိတ်ဆို့ခြင်း mode ကို set socket_set_block

    socket_set_block

    socketအရင်းအမြစ်များ
  • socket များအတွက် socket options ကို set set socket_set_option

    socket_set_option

    socketများအတွက်socke
  • မက်ဆေ့ခ်ျကိုဖတ်ပါ socket_recvmsg

    socket_recvmsg

    မက်ဆေ့ခ်ျကိုဖတ်ပါ
  • Socket_et_option အတွက် alias ကို socket_getopt

    socket_getopt

    Socket_et_optionအတွက
  • Sockets သို့ရေးပါ socket_write

    socket_write

    Socketsသို့ရေးပါ
လူကြိုက်များသော ဆောင်းပါးများ