အိုကေ, ငါနားလည်ပါတယ်, ငါအပြည့်အဝ php ဆောင်းပါးတစ်ပုဒ်ကိုတိုက်ရိုက်ရေးပါမည်။ ဤတွင်ဥပမာဥပမာတစ်ခုရှိသည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ရှေ့မှောက်၌ဘာမျှမ PHP Code Page</span></span><span>
</span><span><span class="hljs-variable">$dummyArray</span></span><span> = </span><span><span class="hljs-title function_ invoke__">range</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">shuffle</span></span><span>(</span><span><span class="hljs-variable">$dummyArray</span></span><span>);
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$dummyArray</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$num</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဂဏန်း <span class="hljs-subst">$num</span></span></span><span> လုပ်ဆောင်နေသည်\n";
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"----------------------------------------\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
တည်နေ Docker ကွန်တိန်နာပတ်ဝန်းကျင်၌တည်၏,ဘယ်လိုသုံးရမလဲ timezone_version_get function ကိုထောက်လှမ်း tzdata မှန်ကန်စွာတပ်ဆင်ထားသည်?
တည်နေ使用 PHP တည်ဆောက် Docker ဘူး,အချိန်နှင့်ဆက်နွယ်သောလုပ်ဆောင်ချက်များ၏မှန်ကန်မှုသည်မကြာခဏပေါ်မူတည်သည် tzdata အိတ်(အချိန်ဇုန်ဒေတာဘေ့စ)。လှျင် tzdata မှန်ကန်စွာသို့မဟုတ်ပျောက်ဆုံးသို့မဟုတ်ပျောက်ဆုံးမ,စေနိုင်သည် `</span><span><span class="hljs-title function_ invoke__">date</span></span><span>()`、`DateTime` နှင့်ဆက်စပ်သောလုပ်ဆောင်ချက်များအမှားအချိန်ပြန်ပို့ပါ,သစ်ထုတ်လုပ်မှုကိုအကျိုးသက်ရောက်စေသည်、အချိန်ကိုက်အလုပ်များနှင့်လျှောက်လွှာယုတ္တိဗေဒ。
ကံကောင်းတာတာ,PHP ထောက်ပံ့ `</span><span><span class="hljs-title function_ invoke__">timezone_version_get</span></span><span>()` လုပ်ဆောင်ချက်,ဒါဟာလက်ရှိ detect လုပ်ဖို့အသုံးပြုနိုင်ပါတယ် PHP 环境中အချိန်ဇုန်ဒေတာဘေ့စ的版本,သွယ်ဝိုက်အတည်ပြုချက် tzdata 是否存တည်နေ并正确加载。
</span><span><span class="hljs-comment">### 1. စစ်ဆေးကြည့်ရှု tzdata တပ်ဆင်အေးထားခြင်း</span></span><span>
တည်နေ PHP ဇာတ်ညွှန်းထဲမှာ,သင်အောက်ပါကုဒ်ကိုသုံးနိုင်သည်:
```php
</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$tzVersion</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_version_get</span></span><span>();
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$tzVersion</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"当前အချိန်ဇုန်ဒေတာဘေ့စ版本: "</span></span><span> . </span><span><span class="hljs-variable">$tzVersion</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"အချိန်ဇုန်ဒေတာဘေ့စ未正确加载,请စစ်ဆေးကြည့်ရှု tzdata ထည့်သွင်းရန်ရှိမရှိ。\n"</span></span><span>;
}
</span></span>
ဗားရှင်းနံပါတ်သည် output ကိုဖြစ်လျှင် (ဥပမာ, 2023.6 ) ဆိုလျှင် tzdata ကိုတပ်ဆင်ပြီးရရှိနိုင်သည်ဟုဆိုလိုသည်။
အချည်းနှီးသော (သို့) အမှားတစ်ခုပြန်ရောက်လာပါကဆိုလိုသည်မှာအချိန်ကာလဇုန်ဒေတာဘေ့စ်ကိုမတင်ရန်နှင့် Docyer Image တွင် install လုပ်ရန်လိုအပ်သည်ဟုဆိုလိုသည်။
Debian သို့မဟုတ် Ubuntu-based Images များအတွက်၎င်းတို့ကို dockerfile တွင်ထည့်နိုင်သည်။
<span>RUN apt-get update && apt-get install -y tzdata
</span>
Alpine Mirressing အတွက်:
<span>RUN apk add --no-cache tzdata
</span>
ထည့်သွင်းပြီးနောက်ပုံကိုပြန်လည်တည်ဆောက်ရန်နှင့် timezone_ving_get () ကိုထပ်မံအတည်ပြုရန်အကောင်းဆုံးဖြစ်သည်။
tzdata ကိုမှန်ကန်စွာတပ်ဆင်ထားရင်တောင် Container System settings ကိုမမှီခိုနိုင်အောင် PHP configurations မှာ default time configurations မှာ default time zone ကိုသတ်မှတ်ဖို့အကြံပြုသည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"လက်ရှိအချိန်: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span></span>
TimeZone_ving_get () tzdata ကိုရှာဖွေခြင်းအားဖြင့် Docyer ကွန်တိန်နာရှိအချိန်ကာလဇုန်ဒေတာဘေ့စ်ကိုရနိုင်သည်ကိုသင်မြန်မြန်ဆန်ဆန်အတည်ပြုနိုင်သည်။ TZDATA ကို DOCKERFILFile တွင်မှန်ကန်စွာတပ်ဆင်ခြင်းနှင့် PHP ရှိပုံမှန်အချိန်ဇုန်များကိုပေါင်းစပ်ခြင်းနှင့် PHP ရှိပုံမှန်အချိန်ဇုန်များချိန်ညှိခြင်းကြောင့်အချိန်ဇယားပြ problems နာများကြောင့်ဖြစ်ပေါ်လာသောအချိန်အမှားများကိုရှောင်ရှားနိုင်ပြီးလျှောက်လွှာတည်ငြိမ်မှုကိုတိုးတက်စေနိုင်သည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"----------------------------------------\n"</span></span><span>;
</span><span><span class="hljs-comment">// အမြီးဆီလျှော်သည် PHP Code Page</span></span><span>
</span><span><span class="hljs-variable">$randomStr</span></span><span> = </span><span><span class="hljs-title function_ invoke__">bin2hex</span></span><span>(</span><span><span class="hljs-title function_ invoke__">random_bytes</span></span><span>(</span><span><span class="hljs-number">4</span></span><span>));
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Debug Mark: <span class="hljs-subst">$randomStr</span></span></span><span>\n";
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>