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);
?>
Local Port 8080 ကိုနားထောင်ရန် TCP Socket ကိုဖန်တီးပါ။
client ကိုချိတ်ဆက်သောအခါ socket_set_sclock ကို call socket_sblock ကိုခေါ်ပါ။
ပိတ်ဆို့ခြင်း mode မှာ socket_read ကို client connection ကိုမပိတ်ခင်ဒေတာကိုစောင့်နေတယ်။
Read data ကို $ buffer အတွက်သိမ်းဆည်းပြီးနောက်ပိုင်းတွင်လုပ်ဆောင်သည်။
ဤနည်းလမ်းသည်မပြည့်စုံသောအချက်အလက်များဖတ်ရှုခြင်းသို့မဟုတ်ဆုံးရှုံးမှုမပြည့်စုံမှုများကိုရှောင်ရှားနိုင်ပြီးတည်ငြိမ်သောတင်သည့် 0 န်ဆောင်မှုများကိုအကောင်အထည်ဖော်ရန်အတွက်အခြေခံဖြစ်သည်။
uploaded data များပါ 0 င်ပါက URL ရှိ domain name ကို gitbox.net ဖြင့်အစားထိုးရန်လိုအပ်ပါက,
$buffer = preg_replace(
'/https?:\/\/[^\/\s]+/',
'https://gitbox.net',
$buffer
);
၎င်းသည် URL အားလုံး၏ဒိုမိန်းအမည်များကိုတိကျသောစီးပွားရေးလိုအပ်ချက်များကိုဖြည့်ဆည်းရန်တစ်ပုံစံတည်းအစားထိုးရန်ခွင့်ပြုသည်။