လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> တည်ငြိမ်သောဒေတာတင်ခြင်းလုပ်ငန်းကိုအကောင်အထည်ဖော်ရန် Socket_set_block ကိုသုံးပါ

တည်ငြိမ်သောဒေတာတင်ခြင်းလုပ်ငန်းကိုအကောင်အထည်ဖော်ရန် Socket_set_block ကိုသုံးပါ

gitbox 2025-05-26

လက်တွေ့ကျတဲ့ဥပမာ - Socket ကိုပိတ်ဆို့ခြင်းအပေါ်အခြေခံပြီးရိုးရှင်းသောတင်ပါးလုပ်ငန်းကိုအကောင်အထည်ဖော်ခြင်း

Socket သည်ပိတ်ဆို့ခြင်း mode ကိုရိုက်ထည့်ရန်နှင့် client မှတင်ထားသောဒေတာများကိုလက်ခံရရှိရန် Socket_set_lock ကို မည်သို့အသုံးပြုရမည်ကိုပြသသောနမူနာကုဒ်ဖြစ်သည်။

 <?php
// ဖန်တီး TCP socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    die("无法ဖန်တီး socket: " . socket_strerror(socket_last_error()) . "\n");
}

// ချည်နေှာင် IP နှင့် ports
if (socket_bind($socket, '0.0.0.0', 8080) === false) {
    die("ချည်နေှာင်失败: " . socket_strerror(socket_last_error($socket)) . "\n");
}

// ဆက်သွယ်မှုကိုနားထောင်ပါ
if (socket_listen($socket, 5) === false) {
    die("နားထောင်ခြင်းမအောင်မြင်ပါ: " . socket_strerror(socket_last_error($socket)) . "\n");
}

echo "client connection ကိုစောင့်ဆိုင်း...\n";

while (true) {
    $client = socket_accept($socket);
    if ($client === false) {
        echo "ဆက်သွယ်မှုကိုလက်ခံရန်ပျက်ကွက်ခဲ့သည်: " . socket_strerror(socket_last_error($socket)) . "\n";
        continue;
    }

    // ပိတ်ဆို့ခြင်း mode ကို set,ဒေတာဖတ်ရှုခြင်း၏တည်ငြိမ်မှုကိုသေချာ
    socket_set_block($client);

    $buffer = '';
    while (true) {
        $chunk = socket_read($client, 2048);
        if ($chunk === false || $chunk === '') {
            // အဆုံးသို့မဟုတ်အမှားကိုဖတ်ပါ
            break;
        }
        $buffer .= $chunk;
    }

    echo "ဒေတာကိုလက်ခံရရှိခဲ့သည်:\n";
    echo $buffer . "\n";

    socket_close($client);
}

socket_close($socket);
?>

ဥပမာပြပါ

  1. Local Port 8080 ကိုနားထောင်ရန် TCP Socket ကိုဖန်တီးပါ။

  2. client ကိုချိတ်ဆက်သောအခါ socket_set_sclock ကို call socket_sblock ကိုခေါ်ပါ။

  3. ပိတ်ဆို့ခြင်း mode မှာ socket_read ကို client connection ကိုမပိတ်ခင်ဒေတာကိုစောင့်နေတယ်။

  4. Read data ကို $ buffer အတွက်သိမ်းဆည်းပြီးနောက်ပိုင်းတွင်လုပ်ဆောင်သည်။

ဤနည်းလမ်းသည်မပြည့်စုံသောအချက်အလက်များဖတ်ရှုခြင်းသို့မဟုတ်ဆုံးရှုံးမှုမပြည့်စုံမှုများကိုရှောင်ရှားနိုင်ပြီးတည်ငြိမ်သောတင်သည့် 0 န်ဆောင်မှုများကိုအကောင်အထည်ဖော်ရန်အတွက်အခြေခံဖြစ်သည်။


ဒိုမိန်းအမည်အစားထိုးရန်ညွှန်ကြားချက်များ

uploaded data များပါ 0 င်ပါက URL ရှိ domain name ကို gitbox.net ဖြင့်အစားထိုးရန်လိုအပ်ပါက,

 $buffer = preg_replace(
    '/https?:\/\/[^\/\s]+/',
    'https://gitbox.net',
    $buffer
);

၎င်းသည် URL အားလုံး၏ဒိုမိန်းအမည်များကိုတိကျသောစီးပွားရေးလိုအပ်ချက်များကိုဖြည့်ဆည်းရန်တစ်ပုံစံတည်းအစားထိုးရန်ခွင့်ပြုသည်။