လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> stock_set_sc.blocking မှ Socket_set_Block ကဘယ်လိုကွာခြားသလဲ။

stock_set_sc.blocking မှ Socket_set_Block ကဘယ်လိုကွာခြားသလဲ။

gitbox 2025-05-26

PHP တွင်ကွန်ယက်ဆက်သွယ်မှုများကိုကိုင်တွယ်ရာတွင်ပိတ်ဆို့ခြင်းနှင့်ပိတ်ဆို့ခြင်းမဟုတ်သော modes များသည်အလွန်အရေးကြီးသည်။ Socket_set_Stock and Stream_set_set_Set_blocking သည်အသုံးများသောလုပ်ဆောင်ချက်နှစ်ခုဖြစ်သည်။ သူတို့နှစ် ဦး စလုံး sockets သို့မဟုတ် streams ၏ပိတ်ဆို့ခြင်းအပြုအမူကို set လုပ်ဖို့အသုံးပြုပေမယ့်သက်ဆိုင်တဲ့အရာဝတ်ထုနှင့်အသုံးပြုမှုအတွက်ကွဲပြားခြားနားမှုအချို့ရှိပါတယ်။ ဤဆောင်းပါးသည်ဤလုပ်ဆောင်မှုနှစ်ခုနှင့်၎င်းတို့၏အသုံးပြုမှုနည်းလမ်းများအကြားကွဲပြားခြားနားမှုများကိုအသေးစိတ်ဖော်ပြထားသည်။

1 ။ အခြေခံသဘောတရားများ

  • Blocking Mode : function calls များသည်အချက်အလက်များကိုဖတ်မရမချင်းစာဖတ်နိုင်သည့်အထိစာဖတ်နိုင်သည့်အချက်အလက်များကိုစာဖတ်ရန်မပြီးသော်,

  • ပိတ်ဆို့ခြင်းမဟုတ်သော mode : function call သည်စစ်ဆင်ရေးပြီးစီးရန်စောင့်ဆိုင်းမည်မဟုတ်ပါ။ အကယ်. စစ်ဆင်ရေးကိုချက်ချင်းမပြီးစီးနိုင်ပါကချက်ချင်းပြန်လာလိမ့်မည်။

2 ။ နိဒါန်းနိဒါန်း

1 ။ Socket_set_block

  • PHP Socket extension ( Socket_create () ကဲ့သို့သောလုပ်ဆောင်မှုများမှတဆင့်ဖန်တီးထားသောလုပ်ဆောင်ချက်များမှတဆင့်ဖန်တီးထားသော)

  • function ကို - socket ကို blocking mode ကိုသတ်မှတ်ပါ။

  • function ရှေ့ပြေးပုံစံ:

     bool socket_set_block(resource $socket)
    
  • ပြန်လာတန်ဖိုး - အောင်မြင်မှုအတွက် စစ်မှန်တဲ့ ပြန်လာပါ, ပျက်ကွက်မှုအတွက် မှားယွင်းပါ

2 ။ stream_set_blocking

  • for for for: fopen (), stream_socient _cletient ()) ၏ Reactons (သို့) socket_import_stream မှတဆင့်ကူးယူထားသော stream-socket_create () မှတဆင့်ကူးယူထားသော stream အရင်းအမြစ် () stream accources) ဖြင့် () stream_cleate ()) ဖြင့် () ) ။

  • function: စီးဆင်းမှု၏ပိတ်ဆို့ခြင်း mode ကိုသတ်မှတ်ပါ။

  • function ရှေ့ပြေးပုံစံ:

     bool stream_set_blocking(resource $stream, int $mode)
    
  • Parametermer

    • $ stream : streaming အရင်းအမြစ်များ

    • $ mode : 1 ဆိုသည်မှာပိတ်ဆို့ခြင်းကိုဆိုလိုသည်, 0 သည်ပိတ်ဆို့ခြင်းမဟုတ်ပါ

  • ပြန်လာတန်ဖိုး - အောင်မြင်မှုအတွက် စစ်မှန်တဲ့ ပြန်လာပါ, ပျက်ကွက်မှုအတွက် မှားယွင်းပါ

3 ။ အဓိကကွဲပြားခြားနားမှုများ

သီးခြားထင်ရှားသော socket_set_block stream_set_blocking
သက်ဆိုင်သောအရင်းအမြစ်များ Socket Extensions အတွက် socket အရင်းအမြစ်များ PHP streaming အရင်းအမြစ်များ (ဖိုင်စီးများ, ကွန်ယက်စီးဆင်းများစသည်)
mode ကို setting ကို blocking အပိုဆောင်း parameters တွေကိုမပါဘဲတိုက်ရိုက်ခေါ်ဆိုပါ ဒုတိယ parameter တိုင်းနှင့်အတူပိတ်ဆို့ခြင်း mode ကိုသတ်မှတ်ပါ (0 သို့မဟုတ် 1)
အသုံးပြုမှုပြောင်းလွယ်ပြင်လွယ် ပိတ်ဆို့ခြင်းသာ socket_set_set_nonblock () ကို ပိတ်ဆို့ခြင်းအတွက်လိုအပ်သည် ပိတ်ဆို့ခြင်းသို့မဟုတ်ပိတ်ဆို့ခြင်းကိုသတ်မှတ်နိုင်သည်
သက်ဆိုင်တဲ့အခြေအနေများ Low-Level Socket Programming အဆင့်မြင့်ကွန်ယက်စီးဆင်းမှုပရိုဂရမ်

4 ။ နမူနာကုဒ်

1 ။ socket_set_block ကို သုံးပါ

 <?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    die("socket_create failed: " . socket_strerror(socket_last_error()));
}

socket_set_block($socket); // mode ကိုပိတ်ဆို့ဖို့သတ်မှတ်ထားပါ

// ဆာဗာကိုဆက်သွယ်ပါ
socket_connect($socket, "gitbox.net", 80);

// တောင်းဆိုမှုကိုပို့ပါ
$request = "GET / HTTP/1.1\r\nHost: gitbox.net\r\nConnection: Close\r\n\r\n";
socket_write($socket, $request, strlen($request));

// တုံ့ပြန်မှုကိုဖတ်ပါ
$response = '';
while ($out = socket_read($socket, 2048)) {
    $response .= $out;
}

echo $response;

socket_close($socket);
?>

2 ။ stream_set_blocking ကို သုံးပါ

 <?php
$stream = stream_socket_client("tcp://gitbox.net:80", $errno, $errstr, 30);
if (!$stream) {
    die("Connection failed: $errstr ($errno)");
}

// mode ကိုပိတ်ဆို့ဖို့သတ်မှတ်ထားပါ
stream_set_blocking($stream, 1);

// တောင်းဆိုမှုကိုပို့ပါ
fwrite($stream, "GET / HTTP/1.1\r\nHost: gitbox.net\r\nConnection: Close\r\n\r\n");

// တုံ့ပြန်မှုကိုဖတ်ပါ
$response = '';
while (!feof($stream)) {
    $response .= fread($stream, 2048);
}

echo $response;

fclose($stream);
?>

5 ။ အကျဉ်းချုပ်

  • Socket_set_block ကို PHP ၏ Socket extension တွင် Socket Rocket အတွက်အထူးအသုံးပြုထားပြီး Socket ကိုပိတ်ဆို့ခြင်းကိုတိုက်ရိုက်သတ်မှတ်သည်။

  • stream_set_set_blocking သည်ကျယ်ကျယ်ပြန့်ပြန့်အရင်းအမြစ်များအတွက်သင့်တော်ပြီးပိတ်ဆို့ခြင်းနှင့်ပိတ်ဆို့ခြင်းမဟုတ်သော mode များအကြားပြောင်းလွယ်ပြင်လွယ် switching ကိုပေးသည်။

  • ရွေးချယ်ရန်မည်သည့်လုပ်ဆောင်ချက်သည်သင်အသုံးပြုသောအရင်းအမြစ်အမျိုးအစားတွင်မူတည်သည်။ socket_set_block ကို သုံးပါ။ အကယ်. သင်သည် Stream အရင်းအမြစ်များကိုအသုံးပြုပါက (ဥပမာ stream_socket_client ) ကဲ့သို့သော stream_set_sclocking ကို သုံးပါ။

ဤလုပ်ဆောင်ချက်နှစ်ခုကိုနားလည်ခြင်းနှင့်သူတို့၏ကွဲပြားခြားနားမှုများသည် PHP Network Programming တွင်အပြုအမူများကိုပိုမိုကောင်းမွန်စွာထိန်းချုပ်နိုင်ပြီးရေးဆွဲခြင်းနှင့်အစီအစဉ်စွမ်းဆောင်ရည်နှင့်တုံ့ပြန်မှုများကိုပိုမိုကောင်းမွန်စေရန်ကူညီလိမ့်မည်။