လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Popen မှတဆင့်လုပ်ငန်းစဉ်၏ input ကိုနှင့် output ကိုဖွင့်ပြီးအချက်အလက်များနှင့်အပြန်အလှန်ဆက်သွယ်နည်း။

Popen မှတဆင့်လုပ်ငန်းစဉ်၏ input ကိုနှင့် output ကိုဖွင့်ပြီးအချက်အလက်များနှင့်အပြန်အလှန်ဆက်သွယ်နည်း။

M66 2025-07-07

PHP တွင် Popen သည် Popen သည်အလွန်အသုံးဝင်သောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ၎င်းသည်လုပ်ငန်းစဉ်၏အချက်အလက်များနှင့်အပြန်အလှန်ဆက်သွယ်နိုင်ရန်လုပ်ငန်းစဉ်၏ input နှင့် output stream များဖွင့်ရန်အသုံးပြုနိုင်သည်။ ပြင်ပ command များကို execute လုပ်ရန်နှင့်ပြင်ပပရိုဂရမ်များကိုခေါ်ဆိုခြင်း, scripts များနှင့်အပြန်အလှန်ဆက်သွယ်ခြင်းကဲ့သို့သောရလဒ်များကိုရယူရန်လိုအပ်သည့်အခါဤအင်္ဂါရပ်သည်အသုံးဝင်သည်။

Popen function ကဘာလဲ။

Popen function ကိုလုပ်ငန်းစဉ်တစ်ခုဖွင့်လှစ်ရန်နှင့်လုပ်ငန်းစဉ်၏ input သို့မဟုတ် output စီးဆင်းမှုသို့ဖိုင်ညွှန်ပြချက်ကိုပြန်ပို့ရန်အသုံးပြုသည်။ ဒီ function က parameters နှစ်ခုရှိပါတယ်:

 resource popen(string $command, string $mode);
  • $ command : ကွပ်မျက်ခံရမည့် command သည်များသောအားဖြင့် shell command ဖြစ်သည်။

  • $ Mode : Operation Mode, R ကိုဖတ်သည် MODE ကိုကိုယ်စားပြုသည်, W သည် Mode ကိုကိုယ်စားပြုသည်။

ဥပမာအားဖြင့်:

 $handle = popen("ls -l", "r");

အထက်ပါကုဒ်သည်လုပ်ငန်းစဉ်တစ်ခုဖွင့်လှစ်လိမ့်မည်, LS -l command ကို execute လုပ်ပြီးလုပ်ငန်းစဉ်၏ရလဒ်ကိုဖတ်ရန်ခွင့်ပြုပါ။

Popen မှတဆင့်လုပ်ငန်းစဉ်များနှင့်အပြန်အလှန်ဆက်သွယ်နည်း?

ဗောဇ် ၏ပြန်လာတန်ဖိုးမှာဖိုင်ကိုဖိုင်တစ်ခုကဲ့သို့ဒေတာများကိုဖတ်ရန်သို့မဟုတ်ရေးရန်ခွင့်ပြုသည့်ဖိုင်ညွှန်ပြစက်ဖြစ်သည်။ လုပ်ငန်းစဉ်တစ်ခုနှင့်အပြန်အလှန်ဆက်သွယ်သောအခါကျွန်ုပ်တို့သည်လေ့ကျင့်ခန်း၏ output စီးဆင်းမှုမှအချက်အလက်များကိုဖတ်ရန်သို့မဟုတ်လုပ်ငန်းစဉ်၏ input ကိုစီးဆင်းမှုကိုရေးရန် fwe ကို သုံးရန်အများအားဖြင့် အရူးအမူး 0 င်ရန် လိုအပ်သည်။

1 ။ လုပ်ငန်းစဉ်မှအချက်အလက်များကိုဖတ်ပါ

ကျွန်ုပ်တို့သည်ပြင်ပ command တစ်ခုမှဒေတာများကိုရယူလိုပါက Code support မှာအောက်ပါအတိုင်းဖြစ်သည် -

 $handle = popen("ls -l", "r");
if ($handle) {
    while (($line = fgets($handle)) !== false) {
        echo $line;
    }
    fclose($handle);
} else {
    echo "လုပ်ငန်းစဉ်ကိုဖွင့ ်. မရပါ";
}

ဤနေရာတွင်ကျွန်ုပ်တို့သည် output မရှိတော့သည်အထိလုပ်ငန်းစဉ် output ၏လိုင်းတစ်ခုစီကိုဖတ်ရန် fgets များကို ဖြတ်သန်းသွားသည်။

2 ။ လုပ်ငန်းစဉ်ကိုဒေတာရေးပါ

အချက်အလက်များကိုလုပ်ငန်းစဉ်၏စံသတ်မှတ်ထားသော input stream သို့အချက်အလက်များကိုရေးရန်လိုအပ်ပါက PopenW mode မှတဆင့်သင်လုပ်နိုင်သည်။

 $handle = popen("sort", "w");
if ($handle) {
    fwrite($handle, "banana\napple\ncherry\n");
    fclose($handle);
} else {
    echo "လုပ်ငန်းစဉ်ကိုဖွင့ ်. မရပါ";
}

အထက်ပါကုဒ်သည် sort command ကိုစတင်ပြီးအချက်အလက်များကို၎င်း၏စံ input stream သို့ရေးသည်။ Sort ဒီဒေတာကို sort ပါလိမ့်မယ်။

3 ။ ဒေတာကိုဖတ်ပါနှင့်ရေးပါ

သင်တစ်ချိန်တည်းတွင်ဒေတာများကိုဖတ်ရန်နှင့်ရေးရန်လိုအပ်ပါက R + mode ကိုသုံးနိုင်သည်။ ဤချဉ်းကပ်မှုသည်လုပ်ငန်းစဉ်များနှင့်အတူနှစ်လမ်းသွားဆက်သွယ်မှုလိုအပ်သည့်အခြေအနေများအတွက်သင့်လျော်သည်။

 $handle = popen("tee /tmp/output.txt", "r+");
if ($handle) {
    fwrite($handle, "Hello, world!\n");
    fflush($handle);  // ဒေတာကိုရေးထားကြောင်းသေချာပါစေ
    while (($line = fgets($handle)) !== false) {
        echo $line;
    }
    fclose($handle);
} else {
    echo "လုပ်ငန်းစဉ်ကိုဖွင့ ်. မရပါ";
}

ဤဥပမာတွင်ကျွန်ုပ်တို့သည် /tmp/output.txt ဖိုင်ကို /tmp/output.txt ဖိုင်ကို teee command ဖြင့်ရေးသားပြီးလုပ်ငန်းစဉ်၏ရလဒ်မှအချက်အလက်များကိုဖတ်ပါ။

ကွန်ယက်တောင်းဆိုမှုများပြုလုပ်ရန် Popen ကို သုံးပါ

တစ်ခါတစ်ရံတွင်ကျွန်ုပ်တို့သည်ကွန်ယက်နှင့်သက်ဆိုင်သော command များကို popen မှတစ်ဆင့် execute လုပ်ရန်လိုအပ်နိုင်သည်။ curl သို့မဟုတ် wget ကဲ့သို့သော command line tools များမှဝေးလံသောအရင်းအမြစ်များကိုကျွန်ုပ်တို့တောင်းဆိုနိုင်သည်။ Curl မှတစ်ဆင့်ဝက်ဘ်စာမျက်နှာကိုမည်သို့ရယူရမည်ကိုပြသသည့်ဥပမာတစ်ခုမှာ -

 $handle = popen("curl -s http://m66.net", "r");
if ($handle) {
    while (($line = fgets($handle)) !== false) {
        echo $line;
    }
    fclose($handle);
} else {
    echo "လုပ်ငန်းစဉ်ကိုဖွင့ ်. မရပါ";
}

အထက်ဖော်ပြပါကုဒ်သည် http://m66.net ကို curl မှတစ်ဆင့်ပြန်ခေါ်။ ပြန်လာသောအကြောင်းအရာလိုင်းကိုလိုင်းဖြင့်ဖော်ပြထားသည်။

မှတ်သားရန်အရာ

  1. PHPM ဇာတ်ညွှန်းကိုအကောင်အထည်ဖော်ပြီးနောက် Popen မှ စတင်သော Popen မှစတင်ခဲ့သောလုပ်ငန်းစဉ်ကိုအလိုအလျောက်ပိတ်လိမ့်မည်။ အရင်းအမြစ်များကိုမှန်ကန်သောဖြန့်ချိစေရန်သေချာစေရန်ဖိုင်ကိုညွှန်ပြရန် script ကိုမဖွင့်မီ fclose ဟုခေါ်သင့်သည်။

  2. လုံခြုံရေး - Popen ကို အသုံးပြုတဲ့အခါသတိထားပါ။ ဝင်လာသော command များသို့မဟုတ် parameters တွေကိုအန္တရာယ်ရှိတဲ့အသုံးပြုသူများကကိုင်တွယ်ဖြေရှင်းလိမ့်မည်မဟုတ်ကြောင်းသေချာစေရန်, command ၏တစ်စိတ်တစ်ပိုင်းအဖြစ်အသုံးပြုသူထည့်သွင်းမှုများကိုတိုက်ရိုက်ရှောင်ရှားရန်ကြိုးစားပါ။

  3. စွမ်းဆောင်ရည် - Popen သည် လုပ်ငန်းစဉ်ဆိုင်ရာဆက်သွယ်ရေးကိုလွယ်ကူချောမွေ့စေနိုင်သဖြင့်ပြင်ပဖြစ်စဉ်များမကြာခဏစတင်ခြင်းသည်အထူးသဖြင့်အချက်အလက်အမြောက်အများကိုကိုင်တွယ်ဖြေရှင်းသည့်အခါစွမ်းဆောင်ရည်အပေါ်သက်ရောက်မှုရှိနိုင်သည်။

အကျဉ်းချုပ်

Popen သည် PHP တွင်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ ကွဲပြားခြားနားသော mode များကိုအသုံးပြုခြင်းအားဖြင့်သင်သည်ပြောင်းလွယ်ပြင်လွယ်စွာဖတ်နိုင်သည်, ရေးခြင်းနှင့် output odput များကိုတစ်ပြိုင်နက်တည်းလုပ်ဆောင်နိုင်သည်။ လက်တွေ့ကျသောအပလီကေးရှင်းများတွင်ပြင်ပ command များကိုကွပ်မျက်ရန်,