Kuweka ripoti ya usaidizi php. Jinsi ya kupata hitilafu katika nambari yako? PHP hadi HTML - Viendelezi vya Faili

Kipengele cha uwezo wa kupakia seva ni mojawapo ya vigezo vya akaunti za SaaS. Kila mpango wa ushuru una vigezo vyake vya mzigo. Unaweza kutazama mzigo wa sasa wa akaunti katika akaunti yako ya kibinafsi katika mfumo wa CRM.

Wakati mwingine hali inaweza kutokea kwamba akaunti unayotumia hutoa mzigo ambao ni wa juu kuliko kuruhusiwa kwenye mpango wako wa ushuru. Utaarifiwa kuhusu hili kwa barua inayolingana.

Vigezo kuu vinavyoathiri mzigo:

  • Idadi ya watumiaji katika mfumo wanaofanya kazi kwa wakati mmoja;
  • Idadi ya rekodi katika meza za programu;
  • Idadi ya sheria na vikundi vya ufikiaji;
  • Idadi ya vikumbusho, uumbizaji wa rangi, vichungi, n.k.;
  • Idadi ya mahesabu na utata wao;
  • Idadi ya kazi zinazoendeshwa chinichini (kupitia mfumo wa Cron);
  • Idadi ya barua pepe zilizozinduliwa (barua pepe na SMS);
  • Idadi ya ripoti;
  • Kiasi cha kumbukumbu ya programu.

Kwa hiyo, ikiwa baadhi ya makundi ya upatikanaji, uundaji wa rangi, vichungi na vipengele vingine vya usanidi hazitumiwi, basi ni vyema kuzifuta. Unaweza pia kuondoa rekodi zisizohitajika kutoka kwa meza. Mbali na kuondoa vitu vya usanidi, unaweza kuchukua hatua zingine ili kupunguza mzigo kwenye seva. Watajadiliwa kwa undani zaidi hapa chini.

Hatua zote za kupunguza mzigo zinaweza kugawanywa katika sehemu mbili: kwa wasimamizi na kwa watengenezaji. Hatua hizi pia zinaweza kupunguza mzigo kwenye seva wakati wa kutumia toleo la wavuti la programu.

Maelekezo kwa wasimamizi

Kuanza kwa uboreshaji

Jambo la kwanza kabisa unapaswa kufanya ni kuhakikisha kuwa unatumia toleo jipya zaidi la programu. Unaweza kuthibitisha hili kwa kwenda kwenye "Mipangilio" - "Advanced" - "Sasisho la Marekebisho". Ikiwa unatumia toleo la hivi karibuni na marekebisho ya programu, utaona ujumbe unaolingana

Ikiwa unatumia toleo la zamani au marekebisho, programu itakuuliza usasishe.

Ifuatayo, unapaswa kuendesha skanning ya mfumo iliyopanuliwa. Ili kufanya hivyo, nenda kwa "Mipangilio" - "Advanced" - "Scan System" na ubofye kitufe cha "Advanced system scan". Ikiwa makosa yanatokea kwenye programu, yatasahihishwa kiatomati.

Mipangilio ya jumla ya programu

Nenda kwa "Mipangilio" - "Advanced" - "Mipangilio ya Jumla". Kuna mambo mawili ya kuzingatia hapa.

Utafutaji Intuitive - Unaweza kulemaza chaguo hili ikiwa hauitaji kutafuta kwa kunukuu maana.

Hali ya kusogeza kwa dirisha - Unaweza kusoma zaidi kuhusu njia za kusogeza za dirisha kwenye hati zetu. Inashauriwa kuweka mpangilio huu kuwa "Rahisi".

Mipangilio ya Cron

Nenda kwa "Mipangilio" - "Advanced" - "Mipangilio ya Cron". Katika mipangilio ya Cron unaweza kudhibiti kazi zinazoendeshwa kiotomatiki chinichini. Kwa mfano, maingiliano, kutuma barua na SMS. Kuna njia mbili za kupunguza mzigo kutokana na mpangilio huu.

1. Kataza utekelezaji wa majukumu ambayo hutumii katika programu yako. Unaweza kufanya hivyo kwa kufungua kazi inayotakiwa na kuangalia kisanduku cha "Marufuku utekelezaji".

Kwa mfano, ikiwa hutumii kazi ya maingiliano, kisha ufungue kazi inayofanana na uangalie kisanduku cha "Marufuku ya utekelezaji" katika mipangilio yake. Ikiwa hutumii kazi ya kutuma SMS, unaweza kuzuia utekelezaji wa kazi "Kuzalisha SMS", "Kutuma SMS", "Kuangalia hali ya utoaji wa SMS".

2. Badilisha mzunguko wa kazi. Hii inaweza kufanyika kwa kwenda kwenye mipangilio ya kazi na kubadilisha thamani katika uwanja wa "Kipindi". Kwa mfano, katika kazi ya "Kutuma barua", unaweza kutaja kwamba badala ya kila dakika, kazi inapaswa kutekelezwa mara moja kila dakika 5.

Kuweka masharti ya kuhesabu

Programu ya CRM hutumia hesabu kujaza sehemu fulani kiotomatiki. Lakini wakati mwingine masharti ya utekelezaji wao sio sawa. Kwa mfano, mzigo unasababishwa na hali ya Maonyesho ya Sehemu katika usanidi wa hesabu. Matumizi yake yanapaswa kuepukwa.

Kwa mfano, ikiwa tuna hesabu ambayo jumla ya mashamba B na C imeingia kwenye shamba A, basi ni vyema kutumia masharti "Badilisha shamba B" na "Badilisha shamba C". Ikiwa tuna hesabu inayoingia kwenye uwanja A thamani kutoka kwa jedwali lingine kutoka kwa sehemu B, kulingana na thamani katika sehemu ya kiungo B, basi ni jambo la busara kwamba tunaweza kutumia tu masharti ya "Badilisha sehemu B" na "Hifadhi katika jedwali". .

Kuweka na kuhifadhi kumbukumbu

Nenda kwa "Mipangilio" - "Kumbukumbu" - "Mipangilio ya logi". Katika mipangilio ya logi, hupaswi kuwezesha kuingia bila lazima kwa utazamaji wa meza, maoni na rekodi. Hii inaweza kuongeza mzigo kwenye seva na kusababisha faili ya kumbukumbu kuwa kubwa sana. Inafaa pia kuwezesha chaguo la "logi ya kumbukumbu ya kila mwezi" hapa, ambayo itawawezesha kupunguza kiotomati ukubwa wa meza na magogo kila mwezi.

Unaweza pia kuweka kumbukumbu kiotomatiki hapa ikiwa uhifadhi wa kiotomatiki haukuwashwa hapo awali. Hii inaweza kufanyika katika kichupo cha "Archive".

Kuweka vichujio

Ukifungua mipangilio ya kichujio chochote, utaona chaguo "Onyesha idadi ya rekodi kwenye mabano." Inashauriwa kubatilisha uteuzi wa kisanduku hiki, kwa sababu... chaguo hili linaweza kusababisha upakiaji kila wakati meza inafunguliwa. Na zaidi filters vile katika meza, mzigo mkubwa wakati wa kufungua.

Maelekezo kwa watengenezaji

Kufanya kazi na performance_stat table

Muhimu: Kufanya mabadiliko kwenye meza za hifadhidata kunaweza kusababisha programu kutofanya kazi. Haupaswi kufanya mabadiliko kwenye meza za hifadhidata isipokuwa lazima kabisa.

Ingia katika akaunti yako na ufungue anwani https://*anwani ya akaunti yako*/edit_sql.php (ambapo badala ya *anwani ya akaunti yako* weka thamani inayofaa). Katika dirisha linalofungua, nenda kwenye jedwali la hifadhidata iliyo na jina la akaunti yako (kwa mfano, c_myaccount). Katika orodha ya majedwali ya hifadhidata inayofunguliwa, fungua jedwali la f_performance_stat

Jedwali hili hufuatilia hati zote za programu kwa saa iliyopita. Kuanza, unapaswa kupanga hati zote kwenye jedwali hili kwa idadi ya hoja za sql (kutoka nyingi hadi ndogo). Ili kufanya hivyo, bofya mara mbili kwenye kichwa cha "sql_count".

Baada ya data kupangwa, uchambuzi wa data unaweza kuanza. Wakati wa kufanya uchambuzi, unapaswa kuzingatia safu mbili

1. hati - inaonyesha jina la hati inayozalisha mzigo

2. get_data - inatoa maelezo ya kina zaidi kuhusu hati, au ina kiungo kwenye jedwali/kazi ambayo mzigo hutokea.

Kwa urahisi wa uchambuzi, tumia jedwali hapa chini:

Thamani katika sehemu ya "hati". Thamani ya mfano katika sehemu ya "get_data". Maelezo Hatua za kupunguza mzigo
cron.php ...&task_id=1 Mstari kama huu unamaanisha kuwa mzigo hutolewa na moja ya kazi za Cron
Unahitaji kwenda kwenye "Mipangilio ya Cron" na ufungue kazi inayosababisha mzigo (kitambulisho cha kazi kinaonyeshwa kwenye uwanja wa "get_data"). Inastahili kuboresha msimbo wa kazi au kupunguza mzunguko wake. Kuhusu mipangilio ya Cron.
view_line2.php table=42&line=1&filter=48&page=1 Mstari wa aina hii ina maana kwamba mzigo hutolewa na hesabu moja au zaidi katika meza maalum wakati wa kutazama rekodi.
nyanja.php jedwali=42&chujio=48 Mstari wa aina hii ina maana kwamba mzigo hutolewa na hesabu moja au zaidi katika meza fulani wakati wa kutazama meza. Unahitaji kwenda kwenye mipangilio ya hesabu ya meza iliyotajwa kwenye uwanja wa "get_data" (kwa mfano, hii ni meza yenye ID 42). Kuanza, inafaa kutazama na kuboresha hali ya kufanya mahesabu kwenye jedwali maalum. Ikiwa hii haisaidii, inafaa kuboresha nambari ya hesabu yenyewe.
report.php kitambulisho=30 Mstari wa aina hii ina maana kwamba mzigo hutolewa na moja ya ripoti za programu
Inahitajika kuboresha msimbo wa ripoti iliyobainishwa katika sehemu ya "get_data" (kwa mfano, hii ni ripoti yenye ID 30).
Desemba 29, 2012 saa 10:01 jioni
  • Seva ya Microsoft SQL

Tunaendelea kuangalia vidokezo muhimu kwa wanaoanza wakati wa kuunda ripoti katika Huduma za Kuripoti za Microsoft.
Mwanzo unaweza kupatikana hapa:
Kwa wanaopenda bonyeza hapa chini...

0) Jinsi ya kuweka vidhibiti kadhaa kwenye seli ya meza?
Mara nyingi kuna haja ya kuweka vidhibiti kadhaa katika seli 1 ya jedwali. Ukiburuta tu udhibiti kwenye seli, huijaza kabisa. Kidhibiti kinachoitwa Mstatili husaidia kutoka katika hali hii.

Mstatili ni analogi ya Kidhibiti cha Paneli kinachotumiwa katika WinForms; ni aina ya jukwaa la kuweka vidhibiti. Inapowekwa kwenye seli, Mstatili hujaza kisanduku kizima cha jedwali na kuunda "jukwaa" la kuweka vidhibiti vingine.

1) Weka lugha ya ripoti chaguo-msingi
Wakati wa kuunda ripoti, jaribu kutangaza lugha ya ripoti (Ripoti ya Sifa - Lugha).

Hii ni muhimu sana ikiwa unafanya kazi na mteja wa kigeni ambaye mipangilio ya kikanda inatofautiana na yako. Ikiwa hujui ni mipangilio gani mteja wako anatumia, basi inawezekana kutaja Expression na maudhui yafuatayo:
=Mtumiaji!Lugha
Kwa njia hii utaepuka hitilafu katika uumbizaji wa thamani za nambari, tarehe, nyakati, sarafu, n.k. ambazo mteja anatarajia.
2) Kuunganishwa kwa kamba
Wakati mwingine kuna haja ya "kuingiza" thamani ya shamba kutoka kwa hifadhidata kwenye maandishi tuli ya ripoti, iliyowekwa, kwa mfano, kwenye sanduku la maandishi. Kwa maneno mengine, unahitaji kuongeza mistari ya maandishi kwenye mstari 1. SSRS hutoa operesheni ya "&" kwa madhumuni haya.
Tuseme kwenye kisanduku cha maandishi tuna maandishi tuli “Hujambo, uv. Ivan Ivanovich…". Tunahitaji kuchukua nafasi ya Ivan Ivanovich na jina kamili kutoka kwa hifadhidata, kutoka uwanja wa fio. Ili kufanya hivyo, bonyeza kulia kwenye kisanduku cha maandishi, piga menyu ya muktadha, chagua mali ya Expression ya kisanduku cha maandishi na ubadilishe maandishi kama ifuatavyo.
=” Habari, uv. “&Fields!fio.Value&” …”
sasisha: Kama yule anayeheshimika alivyopendekeza katika maoni, njia sahihi zaidi ya kubatilisha mifuatano ni kutumia kishika nafasi.
Ni rahisi kutumia: katika kisanduku cha maandishi, unahitaji kuweka mshale mahali ambapo unakusudia kuingiza thamani kutoka kwa uga wa hifadhidata. Bofya kulia ili kufungua menyu ya muktadha na uchague "Unda kishika nafasi..."

Weka Lebo ya thamani (thamani hii itaonekana kwenye maandishi; ikiwa hutataja thamani ya uga wa Lebo, jina la sehemu kutoka kwenye hifadhidata litatumika) na Thamani (kwa upande wetu hii ni sehemu kutoka kwa hifadhidata)

Utumiaji wa kishika nafasi hutoa faida za ziada:
1) Maandishi yaliyo kwenye udhibiti yanaonekana (kwa njia ambayo nilielezea, mtumiaji huona maandishi tu <>, jambo ambalo hutatanisha mtu anayeona msimbo wa ripoti kwa mara ya kwanza na kupoteza muda wake kutafuta Usemi anaotaka.)
2) Kishika nafasi hukuruhusu kuumbiza uga (weka umbizo la data, badilisha fonti, rangi, upatanishi, n.k.) bila kubadilisha umbizo la maandishi kuu.

Tofauti ni dhahiri:

3) Njia za kuunda data ya nambari
SSRS hutoa chaguo kadhaa za kuumbiza data. Njia rahisi zaidi ya kufomati ni kutaja umbizo (Mali ya Umbizo) katika sifa za udhibiti.

Njia hii ina hasara 2:
1) udhibiti una, pamoja na data ambayo inapaswa kupangiliwa, maandishi ya ziada.
2) wakati wa kusafirisha ripoti kwa CML
Tatizo hili linaweza kutatuliwa kwa kupiga simu njia maalum. Hebu tuangalie mfano:
Kisanduku cha maandishi kina maandishi yafuatayo: "Mpendwa mteja, salio katika akaunti yako ni: " & Fields!UserBalance.Value & " rub." .
Usipofomati, basi mradi Thamani ya Sehemu!Salio la Mtumiaji.Thamani ni 1005.35, inaweza kuonyeshwa kwa mtumiaji kama 1005.350000000000. Ili kuepuka tukio hilo, ni muhimu kutumia njia Umbizo au Nambari ya Umbizo.
Mfano wa matumizi: "Mpendwa mteja, salio katika akaunti yako ni " & Format(Fields! UserBalance.Value,"#,##0.00") & "sugua."
"Mpendwa mteja, salio katika akaunti yako ni " & FormaNumber(Fields!UserBalance.Value,2) &" rub."
Unapotumia Umbizo, lazima utumie kinyago cha umbizo; unapotumia FormaNumber, inatosha kutaja idadi ya maeneo ya desimali.
Kumbuka: Mbinu ya Umbizo pia inatumika kwa uumbizaji tarehe, wakati, pesa, n.k.

4) Hamisha ripoti kwa umbizo la XML, ubinafsishe uga
SSRS hukuruhusu kutuma ripoti kwa miundo tofauti, mojawapo ni CML. Kila udhibiti wa ripoti una sifa 3 ambazo zinawajibika kwa tabia wakati wa kusafirisha kwa CML.

Wacha tuwaangalie kwa karibu:
DataElementName- inawajibika kwa jina la kipengele katika HML, thamani ya chaguo-msingi haijatimizwa. Ikiwa hutatekeleza kipengele hiki, basi jina katika CML litalingana na jina la udhibiti.
DataElementOutput- mali inawajibika ikiwa kipengee kitasafirishwa kwa XML au la. Maadili ambayo yanaweza kuwekwa:
Otomatiki(thamani chaguo-msingi) - kipengele kitasafirishwa ikiwa kina thamani; ikiwa thamani ni batili, basi haitasafirishwa.
Pato- kipengele kinasafirishwa kila wakati.
HakunaPato- kipengele hakijasafirishwa kwa HML
DataElementStyle- inawajibika kwa mtindo wa kipengele katika HML (iwe ni kipengele au sifa)
Maadili ambayo yanaweza kutumika:
Otomatiki(thamani chaguo-msingi) - kulingana na udhibiti, itasafirishwa kama kipengele (nodi) au sifa (sifa). Kwa kweli, sanduku la maandishi pekee ndilo linalosafirishwa kama sifa kwa chaguo-msingi, vipengele vingine vinasafirishwa kama nodi.
Sifa- thamani itawasilishwa kama sifa
Kipengele- thamani itawasilishwa kama kipengele (nodi)
Kipengele muhimu: Sifa Iliyofichwa haitumiki kwa kuhamishwa kwa CML. Kwa hivyo, ikiwa katika CML unanuia kuhamisha kipengele ambacho kinaonyeshwa au ambacho hakijaonyeshwa kulingana na hali fulani, basi sharti hili lazima lihamishiwe kwa Kidhibiti cha Usemi. Mfano: kisanduku cha maandishi kina maandishi ambayo yanaonyeshwa tu wakati hali ya uga ni = 1. Kisha Usemi utaonekana kama hii:
=IIF(Fields!Condition.Value = 1, "Baadhi ya maandishi,"")

Ni hayo tu kwa leo, itaendelea.

Makala yanaelezea utendakazi unaopatikana katika PHP (unaofaa kwa 5.3.x) wa kushughulikia hitilafu za aina zote, ikiwa ni pamoja na hitilafu za tafsiri ya msimbo (E_ERROR, E_PARSE, E_WARNING, nk). Uchakataji huu utakusaidia kuonyesha ukurasa kwa njia inayodhibitiwa ikiwa shida kama hizo zitatokea. Kifungu kina maelezo mengi na mifano ya kazi (usanifu) kwa matumizi ya haraka katika bidhaa yako ya programu. Mwishowe, tovuti ilivunjwa kidogo, vizuri, ni muhimu kuwajulisha injini ya utafutaji kuhusu hili na kichwa 4xx au 5xx na kumfurahisha mtumiaji, badala ya kurudisha skrini nyeupe (au mbaya zaidi, skrini yenye habari takatifu, kwa wadukuzi) na majibu 200 Ok.

Wazo la kuandika mada hii liliibuka nilipouliza maswali 2 kwa ujasiri:

  • Swali kuhusu
  • Swali kuhusu
Kwa karma yangu na kuongeza kwa vipendwa, niligundua kuwa viligeuka kuwa vya kupendeza kwa jamii ya PHP habra. Kwa sababu hii, niliamua kurasimisha ufumbuzi wa masuala haya kwa namna ya makala, ili iwe rahisi na ya kina zaidi kwa watu na injini za utafutaji kupata taarifa wanazohitaji.

Ikiwa una nia, maelezo yako chini ya kukata ...

Sababu za matumizi

Mtumiaji/injini ya utafutaji inahitaji jibu wazi kwamba kuna tatizo kwenye seva. Bila kutumia feng shui fulani, hii ni vigumu kufikia, na wakati mwingine haiwezekani. Hapa ninaangazia haya yote, na pia ninajiachia barua, kwani wiki moja iliyopita sikujua la kufanya, na, labda, waanzilishi wengi pia watavunjika moyo.

Maelezo ya kazi

Utendaji huu unapatikana katika PHP kushughulikia makosa na kudhibiti matokeo. Hapa kuna maelezo ya uzuri na mapungufu yao. Sitatoa nyaraka, nitarejea tu kurasa zake na kuelezea maoni yangu. Yote ambayo yatapewa ni sehemu ndogo tu; nitatoa viungo kwa sehemu husika za hati mwishoni mwa kifungu. Kwa hivyo tunakutana:

- Udhibiti wa makosa yasiyo ya muhimu: maoni, maonyo, makosa ya mtumiaji. Kwa ujumla, kila kitu ambacho hakimalizi tafsiri kwa njia isiyo ya kawaida.
set_error_handler - Huweka kidhibiti cha makosa kilichobainishwa na mtumiaji.
Inahitajika kuandika makosa kama hayo kwenye logi. Ikiwa hutaiweka, basi haitaandikwa kwa logi, lakini daima nataka kujua katika hali gani za kupigana maoni na maonyo yanaweza kuanzishwa. Hiyo ni, inaruhusu mtumiaji kupima moja kwa moja bidhaa na hata hatatambua.
Ikiwa kazi haijainishwa, basi PHP inajaribu tu kuonyesha data kwenye skrini, na ikiwa hii haijatolewa, basi hakuna dalili za uzima zinazotokana na aina hizi za makosa wakati wote.

- Udhibiti, isipokuwa: ni hitilafu ya aina E_ERROR.
set_exception_handler - Huweka kidhibiti maalum cha ubaguzi
Kweli, sijui ni kwanini hii ilizuliwa hata kidogo, wakati kuna kile kilichoelezewa hapa chini na kushughulikia tu kosa la aina ya Isipokuwa. Kwa hivyo ninakuambia kuwa ipo tu. Inashika kosa muhimu la ubaguzi na hukuruhusu kufanya kitu kulihusu. Kwa hali yoyote, hati inaisha. Uendeshaji wake chaguo-msingi ni wa kutosha kwangu binafsi (huandika kwa magogo, hujaribu kuonyesha). Singeifafanua tena kabisa, vinginevyo ningelazimika kuandika juu ya ubaguzi uliotokea kwenye magogo mwenyewe.

- Kazi za udhibiti wa pato: Hapa nitaelezea kazi 3 ambazo unapaswa kujua kwa sababu tofauti. Kwa mfano, kwa au kwa shida za pato la kichwa. Kwa upande wetu, tunahitaji kuonyesha vichwa vya makosa.

Masharti
Kuna faili iliyo na msimbo unaoendesha kwanza au kabla ya msimbo ambao hitilafu inaweza kuonekana, na faili hii na faili zote kabla yake zimetatuliwa kwa 100% na kutowezekana kwa hitilafu kuonekana. Hii ndiyo hali ambayo itafanya iwe rahisi - bila makosa mpaka usajili wote wa kazi zilizo hapo juu zimepita. Faili hii inaelezea mbinu hizi za udhibiti wa makosa katika mchanganyiko. Bafa inafuatiliwa; ikiwa kuna hitilafu, basi weka upya bafa na uonyeshe hitilafu.
Rekodi iliyo na maoni
Nitaongeza mwenyewe kuwa sijajaribu nambari, kwani huu ni mchoro uliorahisishwa wa kile nilichonacho kwenye nambari, maoni yanakaribishwa.

Katika somo hili tutajifunza kitu kama kuficha makosa ya PHP. Njiani, tutaangalia pia jinsi ya sio tu kukandamiza matokeo ya makosa haya, lakini pia jinsi ya kuyaandika kwa faili ya logi, jinsi ya kulinda faili hii ya kumbukumbu, jinsi ya kusanidi kiwango cha ripoti ya makosa ya PHP (jinsi makosa makubwa. kuonyesha, ikiwa ni kuonyesha maonyo), jifunze jinsi ya kuweka mistari ya makosa ya upeo wa juu na kuzima kurekodi kwa makosa yanayorudiwa.

Ninapaswa kuficha makosa ya PHP?

Hitilafu za PHP huzalisha aina mbalimbali za maelezo ambayo huruhusu washambuliaji kukusanya data kuhusu tovuti yako na seva yako. Lakini ikiwa jibu la swali hili lilikuwa "ndiyo" dhahiri, basi kila kitu kingetatuliwa kwa kuongeza mstari mmoja kwa kila faili iliyo na programu za PHP.

Hitilafu_kuripoti(0);

Kwa kweli, makosa yote, ikiwa ni pamoja na maonyo (makosa yasiyo muhimu) yanapaswa kuonyeshwa katika hatua ya kupima. Kuonyesha hitilafu na maonyo pia kutakusaidia kuelewa matatizo yaliyopo (au iwezekanavyo) katika mazingira yako ya kazi. Haupaswi kukandamiza onyesho la makosa na maonyo katika programu zilizokusudiwa usambazaji wa bure, kwa sababu ikiwa shida zitatokea, ripoti zote za watumiaji kuhusu shida zitakuwa sawa: "kuna skrini nyeupe," ambayo itachanganya sana majaribio ya kuigundua.

Kwa ujumla, kwenye seva zilizokusudiwa maendeleo (kwa mfano, kwenye seva ya nyumbani), hakuna haja ya kufuta makosa na maonyo kwa kutumia njia za PHP. kuripoti_kosa (0); Na @ - unahitaji kusoma sababu zao na kurekebisha msimbo wa chanzo.

Kwenye seva za uzalishaji, inashauriwa sana kutoonyesha makosa ya kila mtu yaliyotokea katika msimbo wa PHP, lakini inashauriwa sio tu kukandamiza onyesho lao, lakini pia kuweka logi yao, kuandika kwa msimamizi wa mfumo na kwa PHP. programu - kutoka kwa kumbukumbu hizi watapokea taarifa muhimu kuhusu matatizo iwezekanavyo kwenye tovuti / seva.

Jinsi ya kuwezesha uwekaji makosa ya PHP kupitia .htaccess

Katika sehemu hii ya mafunzo nitaonyesha watumiaji wa Apache jinsi ya kukandamiza matokeo ya makosa ya PHP na kuwaficha kutoka kwa wageni, wakati hitilafu za PHP za kuingia zitawezeshwa kwa uchambuzi zaidi, usanidi huu wote utafanywa kupitia faili ya .htaccess.

Kwa ujumla, njia hii ina faida nyingine nzuri - badala ya kujaribu kupata makosa na maonyo yote ya PHP, tutarekodi kila moja yao kwenye logi yetu ya kibinafsi, kwa sababu hii hakuna kosa moja linalotokea litakalotoroka, hata ikiwa halijatokea. kutoka kwako, na mtu anayetembelea tovuti yako chini ya masharti ambayo, pengine, hata yasingetokea kwako kwa modeli. Shukrani kuna njia rahisi ya kutekeleza mkakati huu madhubuti.

Kuficha makosa ya PHP kutoka kwa wageni

Kuna njia tofauti za kukandamiza hitilafu za PHP kwa kutumia .htaccess. Hili linaweza kufanywa kwa kujumuisha maagizo yafuatayo .htaccess katika faili ya httpd.conf ya kikoa chako au kwenye mzizi (au saraka nyingine yoyote inayolengwa) ya faili ya .htaccess yenye maudhui yafuatayo:

# kukandamiza makosa ya php php_flag display_startup_errors off php_flag display_errors off php_flag html_errors off php_value docref_root 0 php_value docref_ext 0

Hii itasababisha hitilafu za PHP zisiwe hadharani tena kwenye tovuti yako. Hii huondoa hatari zinazowezekana za usalama na huzuia hitilafu hizo mbaya, zisizoeleweka za PHP kutoka kwa kuvunja mpangilio wa tovuti yako na kuwapotosha wageni wako. Hakuna uhariri wa msimbo unaohitajika kwa hili.

Kuwezesha Kuingia kwa Hitilafu ya PHP ya Kibinafsi

Sasa kwa kuwa tumeficha makosa ya PHP kutoka kwa umma, wacha tuwashe ukataji (kurekodi) yao ili tuweze kuzifuatilia. Hii inafanywa kwa kuongeza maagizo yafuatayo ya .htaccess kwenye faili ya httpd.conf ya kikoa chako au faili yako ya .htaccess ambayo imewekwa kwenye saraka ya mzizi (au lengo lolote).

# wezesha kuingia kwa hitilafu ya PHP php_flag log_errors kwenye php_value error_log /home/path/public_html/domain/PHP_errors.log

Ili kufanya kazi hii, unahitaji kuhariri njia katika mstari wa mwisho ili kufanana na eneo halisi la faili yako ya PHP_errors.log. Bila shaka, pamoja na hili unahitaji kuunda faili hii na kuipa ruhusa 755 au ikibidi 777. Hatimaye, unahitaji kulinda faili hii ya kumbukumbu kwa kuongeza mistari hii ya mwisho ya msimbo kwenye faili yako ya .htaccess:

# kuzuia ufikiaji wa logi ya makosa ya PHP

Sasa kwa kuwa kila kitu kiko sawa, angalia ikiwa kila kitu kinafanya kazi vizuri kwa kutupa makosa kadhaa ya PHP. Unaweza pia kutaka kujaribu usalama wa faili yako ya kumbukumbu kwa kujaribu kuipata kupitia kivinjari.

Ushughulikiaji wa hitilafu ya juu ya PHP na .htaccess

Hebu sasa tuzame kwa undani zaidi mada hii, tuongeze utendakazi zaidi na tuchunguze utekelezaji tofauti. Tutaangalia kwanza kushughulikia hitilafu za PHP kwa mazingira ya uzalishaji (kwa mfano, tovuti na programu ambazo ziko mtandaoni, amilifu, na za umma), kisha tutaangalia makosa ya kushughulikia mazingira ya wasanidi programu (kwa mfano, miradi inayoendelezwa, majaribio , binafsi, nk).

Kudhibiti Kiwango cha Kuripoti Hitilafu ya PHP

Kwa kutumia .htaccess inawezekana kubinafsisha kiwango cha kuripoti makosa ili kukidhi mahitaji yako ya vitendo. Ngome ya jumla ya ufuatiliaji viwango vya makosa ya PHP ni kama ifuatavyo.

# mtazamo wa jumla wa maagizo ya kuweka kiwango cha makosa ya php php_value error_reporting number

Kuna maadili kadhaa ya kawaida ambayo yanaweza kubadilishwa kwa "tarakimu", ikiwa ni pamoja na:

  • Ujumbe kamili wa makosa(inalingana na E_ALL) - kwa hili tumia thamani "32767".
  • Ujumbe kamili wa hitilafu- Kwa ukataji kamili wa hitilafu za PHP, tumia thamani "8191", ambayo itajumuisha kukata kila kitu isipokuwa arifa za wakati wa utekelezaji kuhusu matumizi ya miundo iliyoacha kutumika (maonyo kuhusu msimbo ambao hautafanya kazi katika matoleo yajayo ya PHP).
  • Kuripoti Kosa la Zend- Ili kurekodi maonyo mabaya na yasiyo ya hatari ya wakati wa kukusanya yaliyotolewa na injini ya uandishi ya Zend, tumia "192".
  • Kuripoti Kosa la Msingi- rekodi arifa za wakati wa kukimbia. Onyesha kuwa kitu kilitokea wakati wa utekelezaji wa hati ambacho kinaweza kuonyesha hitilafu, ingawa kinaweza pia kutokea wakati wa utekelezaji wa kawaida wa programu. Ili kufanya hivyo, tumia nambari "8".
  • Ujumbe wa makosa madogo- weka makosa mabaya tu ya wakati wa kukimbia. Haya ni makosa ambayo hayawezi kusahihishwa na hati yenyewe, kama vile makosa ya ugawaji kumbukumbu, nk. Katika kesi hii, utekelezaji wa hati umesitishwa. Ili kufanya hivyo, tumia nambari "1".

Bila shaka, unaweza kutumia maadili mengine ("nambari") ili kurekebisha makosa ambayo ungependa kurekodi. Ufafanuzi fulani juu ya suala hili uko chini kabisa.

Kuweka upeo wa ukubwa wa faili kwa ajili ya kurekodi makosa yako

Kwa kutumia .htaccess unaweza kufafanua ukubwa wa juu zaidi wa hitilafu zako za PHP. Hii inamaanisha kufuatilia saizi ya kila kosa lililorekodiwa, na sio faili nzima kwa ujumla. Sintaksia ni kama ifuatavyo:

Maagizo # ya jumla ya kuweka idadi ya juu ya ukubwa wa makosa ya log_errors_max_len integer_number

Hapa, "integer_number" inawakilisha ukubwa wa juu zaidi katika baiti za kila mstari wa makosa ulioandikwa. Thamani chaguo-msingi ni "1024" (yaani kilobaiti 1). Ili kuondoa kikomo hiki, unaweza kuweka thamani kwa "0". Tafadhali kumbuka kuwa thamani hii inatumika pia kwa makosa yaliyoonyeshwa yanapowashwa (kwa mfano, wakati wa usanidi).

Inalemaza uwekaji kumbukumbu wa makosa maradufu

Ikiwa tayari umefanya kazi na logi ya makosa, unaweza kuwa umeona kuwa ina maingizo mengi yanayofanana ambayo yanatofautiana tu wakati wa tukio. Unaweza kuondoa upungufu huu kwa kuongeza tu mistari hii kwenye faili yako ya htaccess:

# zima kurekodi makosa yanayorudiwa php_flag kupuuza_makosa_yaliyorudiwa kwenye php_flag ignore_repeated_source imewashwa

Kwa mipangilio hii, hitilafu zinazorudiwa hazitarekodiwa katika kuingia, hata kama zilitokea katika vyanzo au anwani tofauti. Ikiwa unataka kulemaza makosa yanayorudiwa kutoka kwa chanzo au faili moja tu, toa maoni yako au ufute mstari wa mwisho. Kinyume chake, ili kuhakikisha kuwa faili yako ya kumbukumbu ya tukio inajumuisha makosa yote yanayorudiwa, badilisha maadili yote mawili kutoka juu juu imezimwa.

Kuweka yote pamoja - mazingira ya kazi

Baada ya kujadili vipengele vya kusanidi kurekodi makosa ya PHP, hebu tukusanye maingizo yetu yote kwenye faili moja ya .htaccess. Mipangilio hii imeboreshwa kwa ajili ya mazingira ya kazi.

# Ushughulikiaji wa hitilafu za PHP kwa seva ya uzalishaji php_flag display_startup_errors off php_flag display_errors off php_flag html_errors off php_flag log_errors on php_flag ignore_repeated_errors off php_flag ignore_repeated_source off php_flag_flag_flag_flag_flag_flag_flag_flag_flag_flag_follow f_root 0 php_value docref_ext 0 php_value error_log /home/path/public_html/domain/PHP_errors. logi php_value error_reporting -1 php_value log_errors_max_len 0 Agizo ruhusu, kataa Kataa kutoka kwa wote Ridhisha Yote

Ikiwa unazingatia nambari iliyo na maelezo kuwa mtindo mzuri, basi nambari sawa, lakini na maoni:

# Ushughulikiaji wa hitilafu za PHP kwa seva ya uzalishaji # zima onyesho la makosa ya uanzishaji php_flag display_startup_errors off # zima onyesho la makosa mengine yote php_flag display_errors off # Zima makosa ya markup ya html php_flag html_errors off # Wezesha uwekaji wa hitilafu php_flag log_errors kwenye # php_flag ignore_repeated_errors off # zima makosa ya kupuuza kutoka vyanzo vya kipekee php_flag ignore_repeated_source off # wezesha kurekodi uvujaji wa kumbukumbu za php php_flag report_memleaks kwenye # hifadhi makosa mengi ya hivi punde kupitia php_errormsg php_flag ignore_repeated_source off # disrejeleo inayoweza kufutwa ya uundaji wa # disrejeleo inayoweza kusongeshwa ya # disrejeleo inayoweza kufutwa kwenye # disrejeleo inayoweza kutekelezwa uumbizaji wa makosa viungo vya kumbukumbu php_value docref_ext 0 # kubainisha njia ya faili ya logi ya makosa ya php php_value error_log /home/path/public_html/domain/PHP_errors.log # taja rekodi ya makosa yote ya php php_value error_reporting -1 #lemaza upeo wa urefu wa hitilafu_makosa _max_x # linda faili ya kumbukumbu ya makosa kutoka kwa ufikiaji wa umma Agizo ruhusu, kataa Kataa kutoka kwa wote Ridhisha Yote

Mkakati ulio hapo juu ni bora kwa seva ya umma katika mazingira ya uzalishaji. Makosa yote yamefichwa kutoka kwa macho ya kutazama, lakini yanakusanywa kwa uangalifu kwa wasimamizi na waandaaji wa programu. Bila shaka, unaweza kubinafsisha maagizo uliyopewa ili kuendana na mahitaji yako kikamilifu. Sasa hebu tuangalie mkakati wa kushughulikia makosa kwa mazingira ya maendeleo.

Kuweka yote pamoja - mazingira ya maendeleo

Wakati wa kuunda au kurekebisha programu, ni rahisi zaidi kufuatilia makosa ya PHP yanayojitokeza kwa wakati halisi, kwenye kivinjari. Mfano wa .htaccess na mipangilio inayofaa kwa mazingira ya usanidi imetolewa hapa chini:

# kufanya kazi na makosa ya PHP kwa seva za wasanidi programu php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on php_flag log_errors on php_flag ignore_repeated_errors off php_flag ignore_repeated_source on phpleag_flag_flag_flag_follow_flag_follow_flag_follow_follow na docref_root 0 php_value docref_ex t 0 php_value error_log /home/path/public_html/domain/ PHP_errors .log php_value error_reporting -1 php_value log_errors_max_len 0 Agizo ruhusu, kataa Kataa kutoka kwa wote Ridhisha Yote

Hatutaelezea kila mstari - unaweza kuona maelezo yanayolingana juu kidogo.

Vidokezo

Ili kujua njia kamili ya faili ya logi kwenye seva kwa kutumia njia za PHP (kwa maagizo ya php_value error_log)

echo dirname(__FILE__);

Mfano.htaccess kwa .

php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on php_flag log_errors on php_flag ignore_repeated_errors off php_flag ignore_repeated_source off php_flag report_memleaks_flag kwenye dozi p_value docref_ext 0 php_value error_log C :ServerdatahtdocsPHP_errors.log php_value error_reporting -1 php_value log_errors_max_len 0 Agizo ruhusu, kataa Kataa kutoka kwa wote Ridhisha Yote

Haifanyi kazi

Njia hii haitumiki kwa upangishaji ambapo PHP huendesha kama CGI(masuluhisho yanayowezekana yataonyeshwa katika makala inayofuata).

-1 na ~0 kuonyesha makosa yote ya PHP

Katika maagizo php_value error_reporting kuonyesha makosa yote unaweza kubainisha -1 au ~0 . Wale. mistari inaonekana kama hii:

Php_value error_reporting -1 php_value error_reporting ~0

Kwa kuongeza, njia ya pili inachukuliwa kuwa sahihi zaidi, i.e. kutumia ~0 .

Viendelezi vilivyoainishwa awali na utendakazi kwa busara makosa_kuripoti

  • Vipindi Vilivyoainishwa Awali
  • Waendeshaji Bitwise

Kwa mfano, ikiwa tunataka kurekodi TU makosa yafuatayo E_ERROR (thamani 1), E_WARNING (thamani 2), E_CORE_ERROR (thamani 16), basi ili kupata thamani ya nambari inayolingana itabidi tubadilishe thamani hizi kuwa nambari za binary na fanya shughuli zinazolingana, na kisha zinazosababisha Badilisha nambari ya binary kuwa desimali. Walakini, operesheni hii inaweza kurahisishwa - ongeza tu maadili ya nambari za decimal. Wale. kwa upande wetu ni 1+2+16=19

Php_value error_reporting 19

itaonyesha E_ERROR, E_WARNING na E_CORE_ERROR hitilafu.

Mfano wa njia kamili ya faili ya kumbukumbu kwenye mwenyeji wa Hostland (kwa maagizo ya php_value error_log)

/home/host900456/site/blogs/htdocs/www/PHP_errors.log

Badala ya mwenyeji 900456 unahitaji kuonyesha akaunti yako.

Badala ya tovuti unahitaji kutaja kikoa chako.

Kwa njia, mwenyeji mzuri ambao tovuti hii inaendesha. Tunapendekeza!

20.6K

PHP ni lugha iliyopachikwa ya programu ya upande wa seva. Sehemu kubwa ya syntax yake imekopwa kutoka kwa C, Java, na Perl. Vitendaji kadhaa vya kipekee mahususi vya PHP pia vimeongezwa. Kusudi kuu la lugha hii ni kuunda kurasa za PHP HTML zinazozalishwa kwa nguvu.

PHP kwa HTML

Wakati wa kuunda kurasa ngumu za wavuti, utakabiliwa na hitaji la kuchanganya PHP na HTML ili kukamilisha kazi maalum. Kwa mtazamo wa kwanza, hii inaweza kuonekana kuwa ngumu, kwani PHP na HTML ni taaluma mbili za kujitegemea, lakini hii sivyo. PHP imeundwa kuingiliana na HTML, na msimbo wake unaweza kujumuishwa katika markup ya ukurasa.

Nambari ya PHP imejumuishwa katika kurasa za HTML kwa kutumia vitambulisho maalum. Mtumiaji anapofungua ukurasa, seva huchakata msimbo wa PHP na kisha kutuma matokeo ya usindikaji (sio Nambari ya PHP) kwa kivinjari.

HTML na PHP ni rahisi sana kuchanganya. Sehemu yoyote ya hati ya PHP nje ya vitambulishoinapuuzwa na mkusanyaji wa PHP na kupitishwa moja kwa moja kwa kivinjari. Ukiangalia mfano hapa chini, unaweza kuona kwamba hati kamili ya PHP inaweza kuonekana kama hii:

Habari za leo.

Nambari iliyo hapo juu ni HTML isiyo na maana iliyo na kipande kidogo cha PHP ambacho huchapisha tarehe ya sasa kwa kutumia kitendakazi cha tarehe kilichojengewa ndani. Katika kesi hii, HTML zote zitapuuzwa na mkusanyaji wa PHP na kupitishwa kwa kivinjari bila kubadilika.

Kuunganisha PHP katika HTML ni kweli rahisi sana. Kumbuka kwamba hati ni ukurasa wa HTML na msimbo fulani wa PHP umejumuishwa. Unaweza kuunda hati ambayo itakuwa na HTML pekee (hakuna vitambulisho), na itafanya kazi vizuri.

Mbinu za hali ya juu zaidi:

  • Kipengee cha Menyu


na matokeo:

PHP hadi HTML kwa kutumia short_open_tag

Ikiwa unahitaji kufanya msimbo wako kuwa mfupi iwezekanavyo kabla ya kuingiza HTML kwenye PHP, unaweza kutumia short_tags. Matokeo yake, hutahitaji kuingiavitambulisho_vifupi"Pamoja na" Imezimwa"juu ya" Washa". Ingawa seva nyingi tayari zina chaguo hili kuwezeshwa, ni bora kila wakati kuangalia hili kwa mikono. Tatizo linaloweza kutokea wakati wa kutumia vitambulisho vifupi ni mgongano wakati wa kutumia XML. Katika usemi wa sintaksia ya XML

PHP hadi HTML kwa kutumia short__tag

Hello, leo ni.

Kumbuka kwamba ikiwa unataka kuunda tovuti ambayo inaoana na majukwaa mengi iwezekanavyo, hupaswi kutegemea vitambulisho fupi wakati wa kuingiza PHP kwenye HTML.

HTML hadi PHP kwa kutumia echo

Njia nyingine ya kuunganisha HTML kwenye faili ya PHP ni echo: amri.

Hii itaathiri uangaziaji wa alama katika vihariri wengi. Kwa hivyo, ni muhimu kuangazia nukuu zote mbili ndani ya nambari ya HTML kwa kutumia backslash.

PHP hadi HTML - Viendelezi vya Faili

Kwa seva ya wavuti iliyosanidiwa ya kawaida:

AddHandler cgi-script .html .htm

Kwa seva ya wavuti inayoendesha FastCGI:

AddHandler fcgid-script .html .htm

HTML kwa PHP

Unaweza pia kutumia msimbo wa HTML katika hati za PHP. Unachohitaji kufanya ni wakati wa kufungua ukurasa kwa kutumia PHP, badilisha mpangilio wa vitambulisho vya HTML na PHP vya ufunguzi.