Asetetaan ohjeraportti php. Kuinka löytää virhe koodista? PHP to HTML - tiedostolaajennukset

Palvelimen kuormituskerroin on yksi SaaS-tilien parametreista. Jokaisella tariffisuunnitelmalla on omat kuormitusparametrinsa. Voit aina tarkastella nykyistä tilikuormitusta henkilökohtaisella tililläsi CRM-järjestelmässä.

Joskus voi syntyä tilanne, että käyttämäsi tili tuottaa korkeamman kuorman kuin tariffisuunnitelmassasi sallitaan. Sinulle ilmoitetaan tästä vastaavalla kirjeellä.

Tärkeimmät kuormaan vaikuttavat parametrit:

  • Samanaikaisesti toimivien järjestelmän käyttäjien määrä;
  • Tietueiden lukumäärä ohjelmataulukoissa;
  • Sääntöjen ja pääsyryhmien lukumäärä;
  • Muistutusten määrä, värimuotoilu, suodattimet jne.;
  • Laskelmien määrä ja niiden monimutkaisuus;
  • Taustalla käynnissä olevien töiden määrä (Cron-järjestelmän kautta);
  • Lähetettyjen postitusten määrä (sähköposti ja tekstiviestit);
  • Raporttien määrä;
  • Ohjelmalokin määrä.

Siksi, jos joitain käyttöoikeusryhmiä, värimuotoilua, suodattimia ja muita määrityselementtejä ei käytetä, on suositeltavaa poistaa ne. Voit myös poistaa tarpeettomat tietueet taulukoista. Määrityskohteiden poistamisen lisäksi voit vähentää palvelimen kuormitusta muilla toimenpiteillä. Niitä käsitellään tarkemmin alla.

Kaikki kuormitusta vähentävät toimenpiteet voidaan jakaa kahteen osaan: järjestelmänvalvojille ja kehittäjille. Nämä toimenpiteet voivat myös vähentää palvelimen kuormitusta käytettäessä ohjelman verkkoversiota.

Ohjeet ylläpitäjille

Optimoinnin aloitus

Aivan ensimmäinen asia, joka sinun tulee tehdä, on varmistaa, että käytät ohjelman uusinta versiota. Voit tarkistaa tämän siirtymällä kohtaan "Asetukset" - "Lisäasetukset" - "Versiopäivitys". Jos käytät ohjelman uusinta versiota ja versiota, näet vastaavan viestin

Jos käytät vanhaa versiota tai versiota, ohjelma kehottaa sinua päivittämään.

Seuraavaksi sinun tulee suorittaa laajennettu järjestelmätarkistus. Voit tehdä tämän siirtymällä kohtaan "Asetukset" - "Lisäasetukset" - "Järjestelmän tarkistus" ja napsauttamalla "Advanced system scan" -painiketta. Jos ohjelmassa ilmenee virheitä, ne korjataan automaattisesti.

Yleiset ohjelmaasetukset

Siirry kohtaan "Asetukset" - "Lisäasetukset" - "Yleiset asetukset". Tässä on kaksi huomion arvoista seikkaa.

Intuitiivinen haku - Voit poistaa tämän vaihtoehdon käytöstä, jos sinun ei tarvitse etsiä merkityksen translitteroinnin perusteella.

Ikkunan vieritystila - Voit lukea lisää ikkunoiden vieritystiloista dokumentaatiostamme. Tämän asetuksen arvoksi kannattaa valita "Yksinkertainen".

Cronin asetukset

Siirry kohtaan "Asetukset" - "Lisäasetukset" - "Cron-asetukset". Cron-asetuksissa voit hallita tehtäviä, jotka suoritetaan automaattisesti taustalla. Esimerkiksi synkronointi, kirjeiden ja tekstiviestien lähettäminen. On kaksi tapaa vähentää kuormitusta tämän asetuksen ansiosta.

1. Estä sellaisten tehtävien suorittaminen, joita et käytä ohjelmassasi. Voit tehdä tämän avaamalla haluamasi tehtävän ja valitsemalla "Estä suoritus" -valintaruudun.

Jos esimerkiksi et käytä synkronointitoimintoa, avaa vastaava tehtävä ja valitse sen asetuksista Prohibit execution -valintaruutu. Jos et käytä tekstiviestien lähetystoimintoa, voit kieltää tehtävien "Tekstiviestin luominen", "Tekstiviestien lähettäminen", "SMS-toimituksen tilan tarkistaminen" suorittamisen.

2. Muuta tehtävien tiheyttä. Tämä voidaan tehdä siirtymällä tehtävän asetuksiin ja muuttamalla arvoa "Kausi"-kentässä. Esimerkiksi “Kirjeiden lähettäminen” -tehtävässä voit määrittää, että tehtävä suoritetaan jokaisen minuutin sijasta kerran 5 minuutin välein.

Laskentaehtojen asettaminen

CRM-ohjelmisto täyttää jotkin kentät automaattisesti laskelmien avulla. Mutta joskus olosuhteet niiden toteuttamiselle eivät ole optimaaliset. Kuormituksen aiheuttaa esimerkiksi laskenta-asetuksissa oleva Field Display -ehto. Sen käyttöä tulee välttää.

Jos meillä on esimerkiksi laskelma, jossa kenttien B ja C summa on syötetty kenttään A, niin on suositeltavaa käyttää ehtoja "Muuta kenttää B" ja "Muuta kenttää C". Jos meillä on laskelma, joka syöttää kenttään A arvon toisesta taulukosta kentästä B, riippuen linkkikentän B arvosta, niin on loogista, että voimme käyttää vain "Muuta kenttää B" ja "Tallenna taulukkoon" -ehtoja. .

Lokien määrittäminen ja arkistointi

Siirry kohtaan "Asetukset" - "Lokit" - "Lokiasetukset". Lokiasetuksissa ei pidä tarpeettomasti ottaa käyttöön taulukoiden, näkymien ja tietueiden käyttäjän katselujen kirjaamista. Tämä voi sekä lisätä palvelimen kuormitusta että aiheuttaa liian suuren lokitiedoston. Täällä kannattaa myös ottaa käyttöön "Kuukausittainen arkistointiloki" -vaihtoehto, jonka avulla voit automaattisesti pienentää taulukon kokoa lokeilla joka kuukausi

Voit myös arkistoida lokit automaattisesti tänne, jos automaattinen arkistointi ei ollut aiemmin käytössä. Tämä voidaan tehdä "Arkisto"-välilehdellä.

Suodattimien asettaminen

Jos avaat minkä tahansa suodattimen asetukset, näet vaihtoehdon "Näytä tietueiden määrä suluissa". On suositeltavaa poistaa tämän ruudun valinta, koska... tämä vaihtoehto voi aiheuttaa kuormitusta joka kerta, kun pöytä avataan. Ja mitä enemmän tällaisia ​​suodattimia taulukossa on, sitä suurempi kuormitus avattaessa.

Ohjeet kehittäjille

Työskentely performance_stat-taulukon kanssa

Tärkeää: Muutosten tekeminen tietokantataulukoihin saattaa johtaa siihen, että ohjelma ei toimi. Sinun ei pitäisi tehdä muutoksia tietokantataulukoihin, ellei se ole ehdottoman välttämätöntä.

Kirjaudu tilillesi ja avaa osoite https://*tilisi osoite*/edit_sql.php (johon *tilin osoitteen* sijaan kirjoita oikea arvo). Siirry avautuvassa ikkunassa tietokantataulukkoon, joka sisältää tilisi nimen (esimerkiksi c_myaccount). Avaa avautuvasta tietokantataulukkojen luettelosta taulukko f_performance_stat

Tämä taulukko pitää kirjaa kaikista ohjelman skripteistä viimeisen tunnin ajalta. Aluksi sinun tulee lajitella kaikki tämän taulukon komentosarjat sql-kyselyiden lukumäärän mukaan (suurimmasta pienimpään). Voit tehdä tämän kaksoisnapsauttamalla "sql_count"-otsikkoa.

Kun tiedot on lajiteltu, tietojen analysointi voidaan aloittaa. Kun suoritat analyysiä, sinun tulee kiinnittää huomiota kahteen sarakkeeseen

1. script - osoittaa kuorman tuottavan skriptin nimen

2. get_data - antaa tarkempia tietoja komentosarjasta tai sisältää linkin taulukkoon/tehtävään, jossa lataus tapahtuu.

Käytä alla olevaa taulukkoa analysoinnin helpottamiseksi:

Arvo "script"-kentässä Esimerkkiarvo "get_data" -kentässä Kuvaus Toimenpiteet kuormituksen vähentämiseksi
cron.php ...&tehtävän_tunnus=1 Tällainen viiva tarkoittaa, että yksi Cron-työstä tarjoaa kuorman
Sinun on siirryttävä "Cronin asetuksiin" ja avattava kuormituksen aiheuttava työ (työn tunnus näkyy "get_data" -kentässä). Työkoodi kannattaa joko optimoida tai vähentää sen tiheyttä. Tietoja Cronin asetuksista.
view_line2.php table=42&line=1&filter=48&page=1 Tämän tyyppinen rivi tarkoittaa, että kuormitus annetaan yhdellä tai useammalla laskulla tietyssä taulukossa tietuetta tarkasteltaessa
fields.php table=42&filter=48 Tämän tyyppinen rivi tarkoittaa, että kuormitus on annettu yhdellä tai useammalla laskulla tietyssä taulukossa taulukkoa tarkasteltaessa Sinun on siirryttävä "get_data" -kentässä määritetyn taulukon laskenta-asetuksiin (esimerkissä tämä on taulukko, jonka tunnus on 42). Aluksi kannattaa tarkastella ja optimoida edellytykset laskelmien suorittamiselle määritetyssä taulukossa. Jos tämä ei auta, kannattaa itse laskentakoodi optimoida.
report.php id=30 Tämän tyyppinen rivi tarkoittaa, että jokin ohjelmaraporteista tarjoaa kuorman
"get_data"-kentässä määritetyn raportin koodi on tarpeen optimoida (esimerkissä tämä on raportti, jonka tunnus on 30).
29. joulukuuta 2012 klo 22.01
  • Microsoft SQL Server

Jatkamme hyödyllisten vihjeiden tarkastelua aloittelijoille, kun he luovat raportteja Microsoft Reporting Services -palvelussa.
Aloitus löytyy täältä:
Kiinnostuneet, klikkaa alta...

0) Kuinka sijoittaa useita ohjausobjekteja taulukon soluun?
Melko usein on tarvetta sijoittaa useita ohjausobjekteja yhteen taulukon soluun. Jos vedät ohjausobjektin soluun, se täyttää sen kokonaan. Ohjaus nimeltä Suorakulmio auttaa pääsemään ulos tästä tilanteesta.

Suorakulmio on analogi WinFormsissa käytetylle paneelisäätimelle, se on eräänlainen alusta säätimien sijoittamiseen. Kun suorakulmio sijoitetaan soluun, se täyttää koko taulukon solun luoden "alustan" muiden ohjausobjektien sijoittamista varten.

1) Aseta oletusraportin kieli
Kun luot raportteja, yritä määrittää raportin kieli (Raportin ominaisuudet - Kieli).

Tämä on erittäin hyödyllistä, jos työskentelet ulkomaisen asiakkaan kanssa, jonka alueelliset asetukset poikkeavat sinun. Jos et tiedä, mitä asetuksia asiakkaasi käyttää, on mahdollista määrittää lauseke seuraavalla sisällöllä:
=Käyttäjä!Kieli
Näin vältät epäsäännöllisyydet asiakkaan odottamien numeeristen arvojen, päivämäärien, kellonaikojen, valuuttojen jne. muotoilussa.
2) Merkkijonojen ketjutus
Joskus on tarpeen "lisätä" kentän arvo tietokannasta raportin staattiseen tekstiin, joka on sijoitettu esimerkiksi tekstilaatikkoon. Toisin sanoen, sinun on lisättävä tekstirivejä yhdelle riville. SSRS tarjoaa tähän tarkoitukseen "&"-operandin.
Oletetaan, että texboxissa on staattinen teksti "Hei, uv. Ivan Ivanovitš..."
Meidän on korvattava Ivan Ivanovich koko nimellä tietokannasta, fio-kentästä. Voit tehdä tämän napsauttamalla hiiren kakkospainikkeella tekstiruutua, avaamalla kontekstivalikon, valitsemalla texboxin Expression-ominaisuuden ja muuttamalla tekstiä seuraavasti:
=” Hei, uv. “&Kentät!fio.Arvo&”…” upd:
Se on helppokäyttöinen: texboxissa sinun on asetettava kohdistin paikkaan, johon aiot lisätä arvon tietokantakentästä. Napsauta hiiren kakkospainikkeella avataksesi kontekstivalikon ja valitse "Luo paikkamerkki...".

Aseta arvo Label (tämä arvo näkyy tekstissä; jos et määritä arvoa Label-kenttään, käytetään kentän nimeä tietokannasta) ja Arvo (tässä tapauksessa tämä on kenttä tietokanta)

Paikkamerkkien käyttö tarjoaa lisäetuja:
1) Ohjaimessa oleva teksti näkyy (kuvaamassani menetelmässä käyttäjä näkee vain tekstin <>, mikä hämmentää henkilöä, joka näkee raporttikoodin ensimmäistä kertaa, ja tuhlaa aikaansa halutun lausekkeen etsimiseen.)
2) Paikkamerkki antaa sinun muotoilla kentän (asettaa tietomuodon, muuttaa fonttia, väriä, tasausta jne.) muuttamatta päätekstin muotoilua.

Ero on ilmeinen:

3) Numeerisen datan muotoilutapoja
SSRS tarjoaa useita vaihtoehtoja tietojen muotoiluun. Yksinkertaisin tapa muotoilla on määrittää muoto (Format-ominaisuus) ohjausobjektin ominaisuuksissa.

Tällä menetelmällä on 2 haittaa:
1) ohjausobjekti sisältää muotoiltavien tietojen lisäksi lisätekstiä.
2) vietäessä raporttia CML:ään
Tämä ongelma voidaan ratkaista kutsumalla erityisiä menetelmiä. Katsotaanpa esimerkkiä:
Tekstilaatikko sisältää seuraavan tekstin: "Hyvä asiakas, tilisi saldo on: " & Kentät!UserBalance.Value & " rub."
. Jos et alusta, niin jos Fields!UserBalance.Value-arvo on 1005.35, se voidaan näyttää käyttäjälle muodossa 1005.350000000000. Tällaisen tapauksen välttämiseksi on välttämätöntä käyttää menetelmää Muoto tai.
FormatNumber
Käyttöesimerkki: "Hyvä asiakas, tilisi saldo on " & Format(Fields!UserBalance.Value,"#,##0.00") & "hankaa."
"Hyvä asiakas, tilisi saldo on " & FormaNumber(Fields!UserBalance.Value,2) & " rub."
Formatia käytettäessä on käytettävä muotoilumaskia FormaNumberia käytettäessä, riittää kun määrität desimaalien määrän.

Huomautus: Format-menetelmää voidaan käyttää myös päivämäärän, ajan, rahan jne. muotoiluun.
4) Vie raportti XML-muotoon, mukauta kenttiä

SSRS:n avulla voit viedä raportin eri muotoihin, joista yksi on CML. Jokaisella raportin ohjausobjektilla on 3 ominaisuutta, jotka ovat vastuussa CML:ään vietävästä toiminnasta.
Katsotaanpa niitä tarkemmin:– vastaa elementin nimestä HML:ssä, oletusarvo ei täyty. Jos et suorita tätä elementtiä, CML:n nimi vastaa ohjausobjektin nimeä.
DataElementOutput– Ominaisuus on vastuussa siitä, viedäänkö elementti XML:ään vai ei. Arvot, jotka voidaan asettaa:
Auto(oletusarvo) – elementti viedään, jos sillä on arvo, sitä ei viedä.
Lähtö– elementti viedään aina.
Ei lähtöä– elementtiä ei viedä HML:ään
DataElementStyle– vastaa HML:n elementin tyylistä (olipa se sitten elementti tai attribuutti)
Arvot, joita voidaan käyttää:
Auto(oletusarvo) – ohjausobjektista riippuen se viedään elementtinä (solmuna) tai attribuuttina (attribuuttina). Itse asiassa vain texbox viedään oletusarvoisesti attribuuttina, loput elementit viedään solmuina.
Attribuutti– arvo esitetään attribuuttina
Elementti– arvo esitetään elementtinä (solmuna)
Tärkeä ominaisuus: Piilotettu-ominaisuus ei koske vientiä CML:ään. Jos siis CML:ssä aiot viedä elementin, joka näkyy tai ei perustu ehtoon, tämä ehto on siirrettävä Expression-ohjausobjektiin. Esimerkki: tekstilaatikko sisältää tekstiä, joka näkyy vain, kun kentän ehto = 1. Tällöin lauseke näyttää tältä:
=IIF(Kentät!Ehto.Arvo = 1, "Jotkin tekstiä",")

Siinä kaikki tälle päivälle, jatketaan.

Artikkelissa kuvataan toimintoja, jotka ovat saatavilla PHP:ssä (koskee versiota 5.3.x) kaikentyyppisten virheiden käsittelyyn, mukaan lukien koodin tulkintavirheet (E_ERROR, E_PARSE, E_WARNING jne.). Tämä käsittely auttaa sinua näyttämään sivun hallitusti, jos tällaisia ​​ongelmia ilmenee. Artikkeli sisältää monia kuvauksia ja toimintaesimerkkejä (arkkitehtuuri) välittömästi käytettäväksi ohjelmistotuotteessasi. Lopulta sivusto meni hieman rikki, no, tästä on ilmoitettava hakukoneelle otsikolla 4xx tai 5xx ja viihdyttämään käyttäjää sen sijaan, että palautettaisiin valkoinen näyttö (tai mikä pahempaa, näyttö, jossa on pyhää tietoa, hakkerit) ja vastauksena 200 Ok.

Ajatus kirjoittaa tämä aihe syntyi, kun esitin rohkeasti 2 kysymystä:

  • Kysymys aiheesta
  • Kysymys aiheesta
Karmani ja suosikkeihini lisäämisen perusteella tajusin, että ne osoittautuivat mielenkiintoisiksi PHP habra -yhteisölle. Tästä syystä päätin virallistaa ratkaisut näihin kysymyksiin artikkelin muodossa, jotta ihmisten ja hakukoneiden olisi helpompi ja kattavampi löytää tarvitsemansa tiedot.

Jos kiinnostuit, niin yksityiskohdat ovat alla...

Syitä käyttöön

Käyttäjä/hakukone tarvitsee selkeän vastauksen, että palvelimessa on ongelma. Ilman tiettyä feng shuita tämä on melko vaikea saavuttaa ja joskus mahdotonta. Tässä valotan kaikkea tätä ja jätän myös muistiinpanon itselleni, sillä viikko sitten en tiennyt mitä tehdä, ja luultavasti myös monet aloittelijat masentuvat.

Toimintojen kuvaukset

Tämä toiminto on saatavilla PHP:ssä virheiden käsittelyyn ja tulosteen hallintaan. Tässä on kuvaus niiden hyvistä ja puutteista. En toimita asiakirjoja, viittaan vain sen sivuille ja kuvailen mielipiteeni. Annan vain pienen osan artikkelin lopussa olevista asiakirjoista. Joten tapaamme:

- Ei-kriittisten virheiden hallinta: kommentit, varoitukset, käyttäjävirheet. Yleensä kaikki, mikä ei lopeta tulkintaa epänormaalisti.
set_error_handler - Asettaa käyttäjän määrittämän virhekäsittelijän.
Kaikki tällaiset virheet on kirjoitettava lokiin. Jos et aseta sitä, sitä ei kirjoiteta lokiin, mutta haluan aina tietää, missä taistelutilanteissa kommentit ja varoitukset voivat laukaista. Eli sen avulla käyttäjä voi automaattisesti testata tuotetta, eikä hän edes huomaa sitä.
Jos toimintoa ei ole määritetty, niin PHP yrittää vain näyttää dataa näytöllä, ja jos sitä ei anneta, tämäntyyppisistä virheistä ei synny elonmerkkejä.

- Valvonta, poikkeukset: on virhe tyyppiä E_ERROR.
set_exception_handler – Asettaa mukautetun poikkeuskäsittelijän
No, en tiedä miksi tämä edes keksittiin, kun on alla kuvattu ja yksinkertaisesti Poikkeustyyppisen virheen käsittely. Joten kerron teille, että se yksinkertaisesti on olemassa. Se havaitsee kriittisen poikkeusvirheen ja antaa sinun tehdä asialle jotain. Joka tapauksessa käsikirjoitus päättyy. Sen oletustoiminto riittää minulle henkilökohtaisesti (kirjoittaa lokeihin, yrittää näyttää). En määrittelisi sitä ollenkaan uudelleen, muuten joutuisin itse kirjoittamaan lokeihin sattuneesta poikkeuksesta.

- Lähtöohjaustoiminnot: Tässä kuvailen 3 toimintoa, jotka sinun pitäisi tietää eri syistä. Esimerkiksi otsikkotulostusongelmia varten. Meidän tapauksessamme meidän on näytettävä virheotsikot.

Ehdot
On tiedosto koodilla, joka suoritetaan ensin tai ennen sitä koodia, jossa virhe saattaa ilmetä, ja tämä tiedosto ja kaikki sitä edeltävät tiedostot on 100-prosenttisesti virheenkorjattu virheen ilmestymisen mahdottomuudella. Tämä on ehto, joka helpottaisi - ilman virheitä, kunnes kaikki yllä olevien toimintojen rekisteröinnit ovat ohitettu. Tämä tiedosto kuvaa nämä virheenhallintatekniikat kompleksisesti. Puskuria valvotaan, jos siinä on virhe, nollaa puskuri ja näytä virhe.
Koodi kommenteilla
Lisään itse, että en ole testannut koodia, koska tämä on yksinkertaistettu kaavio siitä, mitä minulla on koodissa, kommentit ovat tervetulleita

Tällä oppitunnilla opimme sellaisen asian kuin PHP-virheiden piilottaminen. Matkan varrella tarkastelemme myös, kuinka näiden virheiden ulostuloa ei vain tukahdu, vaan myös kuinka ne kirjoitetaan lokitiedostoon, kuinka tämä lokitiedosto suojataan, miten PHP-virheraportointitaso määritetään (miten vakavia virheitä näyttääksesi, näytetäänkö varoituksia), opi asettamaan virherivien enimmäiskoko ja poistamaan toistuvien virheiden tallennus käytöstä.

Pitäisikö minun piilottaa PHP-virheet?

PHP-virheet tarjoavat laajan valikoiman tietoja, joiden avulla hyökkääjät voivat kerätä tietoja sivustostasi ja palvelimestasi. Mutta jos vastaus tähän kysymykseen oli selvä "kyllä", kaikki ratkeaisi lisäämällä jokaiseen tiedostoon yksi rivi PHP-ohjelmilla

Error_reporting(0);

Itse asiassa kaikki virheet, mukaan lukien varoitukset (ei-kriittiset virheet), tulisi näyttää testausvaiheessa. Virheiden ja varoitusten näyttäminen auttaa sinua myös ymmärtämään olemassa olevia (tai mahdollisia) ongelmia työympäristössäsi. Sinun ei pitäisi tukahduttaa virheiden ja varoitusten näyttöä ilmaisjakeluun tarkoitetuissa ohjelmissa, koska jos ongelmia ilmenee, kaikki käyttäjäraportit ongelmista ovat samat: "on valkoinen näyttö", mikä vaikeuttaa suuresti yrityksiä selvittää se.

Yleensä kehityskäyttöön tarkoitetuilla palvelimilla (esimerkiksi kotipalvelimella) virheitä ja varoituksia ei tarvitse poistaa PHP-menetelmillä error_reporting(0); Ja @ – sinun on tutkittava niiden syitä ja korjattava lähdekoodi.

Tuotantopalvelimilla on erittäin suositeltavaa olla näyttämättä kaikille PHP-koodissa tapahtuneita virheitä, mutta on suositeltavaa paitsi estää niiden näyttöä, myös pitää niistä lokia, kirjoittaa ne muistiin järjestelmänvalvojalle ja PHP:lle. ohjelmoija - näistä lokeista he saavat tärkeitä tietoja mahdollisista ongelmista sivustolla/palvelimella.

PHP-virheiden kirjaamisen ottaminen käyttöön .htaccess-tiedoston kautta

Tässä opetusohjelman osassa näytän Apache-käyttäjille, kuinka PHP-virheiden ulostulo estetään ja ne piilotetaan vierailijoilta, kun taas PHP-virheiden kirjaaminen otetaan käyttöön lisäanalyysiä varten, kaikki tämä konfigurointi tehdään .htaccess-tiedoston kautta.

Yleisesti ottaen tällä menetelmällä on toinen loistava etu - sen sijaan, että yrittäisimme saada kiinni kaikista PHP-virheistä ja varoituksista, kirjaamme jokaisen niistä henkilökohtaiseen lokiimme, tämän ansiosta yksikään esiintyvä virhe ei pääse karkaamaan, vaikka sitä ei olisi tapahtunut. sinulta ja joku vierailee sivustollasi olosuhteissa, jotka eivät ehkä edes tulisi mieleen mallinteosta. Kiitos, tämä tehokas strategia on helppo toteuttaa.

PHP-virheiden piilottaminen vierailijoilta

On olemassa erilaisia ​​tapoja estää PHP-virheet käyttämällä .htaccess-tiedostoa. Tämä voidaan tehdä sisällyttämällä seuraavat .htaccess-käskyt verkkotunnuksesi httpd.conf-tiedostoon tai seuraavan sisällön sisältävän .htaccess-tiedoston juurihakemistoon (tai mihin tahansa muuhun kohdehakemistoon):

# suppress php errors 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

Tämä aiheuttaa sen, että PHP-virheet eivät enää ole julkisia sivustollasi. Tämä eliminoi mahdolliset tietoturvariskit ja estää näitä rumia, käsittämättömiä PHP-virheitä rikkomasta sivustosi ulkoasua ja hämmentämästä kävijöitäsi. Tämä ei vaadi koodin muokkausta.

Henkilökohtaisen PHP-virheen kirjaamisen ottaminen käyttöön

Nyt kun olemme piilottaneet PHP-virheet yleisöltä, otetaan käyttöön niiden kirjaaminen (tallennus), jotta voimme jäljittää ne. Tämä tehdään lisäämällä seuraavat .htaccess-käskyt verkkotunnuksesi httpd.conf-tiedostoon tai .htaccess-tiedostoon, joka sijaitsee juurihakemistossa (tai missä tahansa kohdehakemistossa).

# ota PHP-virheloki käyttöön php_flag log_errors osoitteessa php_value error_log /home/path/public_html/domain/PHP_errors.log

Jotta tämä toimisi, sinun on muokattava viimeisen rivin polkua vastaamaan PHP_errors.log-tiedoston todellista sijaintia. Tietenkin tämän ohella sinun on luotava tämä tiedosto ja annettava sille käyttöoikeudet 755 tai tarvittaessa 777. Lopuksi sinun on suojattava tämä lokitiedosto lisäämällä nämä viimeiset koodirivit .htaccess-tiedostoosi:

# estää pääsyn PHP-virhelokiin

Nyt kun kaikki on paikallaan, tarkista, että kaikki toimii oikein heittämällä joitain PHP-virheitä. Voit myös testata lokitiedostosi turvallisuutta yrittämällä käyttää sitä selaimen kautta.

Kehittynyt PHP-virheenkäsittely .htaccessilla

Sukellaan nyt syvemmälle tähän aiheeseen, lisätään lisätoimintoja ja tutkitaan erilaisia ​​toteutuksia. Tarkastelemme ensin PHP-virheiden käsittelyä tuotantoympäristöissä (esimerkiksi verkkosivustot ja sovellukset, jotka ovat verkossa, aktiiviset ja julkiset), sitten tarkastelemme virheiden käsittelyä kehittäjäympäristöissä (esimerkiksi kehitteillä olevissa projekteissa, testaus, yksityinen jne.).

PHP-virheraportointitason hallinta

Käyttämällä .htaccess-tiedostoa on mahdollista mukauttaa virheraportointitaso vastaamaan käytännön tarpeitasi. PHP:n virheprosentin tarkkailu on seuraava:

# yleinen näkymä ohjeesta php-virhetason php_value error_reporting number asettamiseen

On olemassa useita yleisiä arvoja, jotka voidaan korvata "numerolla", mukaan lukien:

  • Täydellisin virheilmoitus(vastaa E_ALL) - käytä tähän arvoa "32767".
  • Täysi virheilmoitus- Käytä PHP-virheiden täydellistä kirjaamista varten arvoa "8191", joka sisältää kaiken kirjaamisen paitsi ajonaikaiset ilmoitukset vanhentuneiden rakenteiden käytöstä (varoitukset koodista, joka ei toimi PHP:n tulevissa versioissa).
  • Zend Error Reporting- Käytä numeroa 192 tallentaaksesi sekä kohtalokkaat että ei-taholliset käännösajan varoitukset, jotka Zend-skriptimoottori on luonut.
  • Perusvirheraportointi- tallentaa ajonaikaisia ​​ilmoituksia. Osoittaa, että komentosarjan suorittamisen aikana tapahtui jotain, mikä saattaa viitata virheeseen, vaikka se voi tapahtua myös ohjelman normaalin suorituksen aikana. Käytä tätä varten numeroa "8".
  • Minimaalinen virheilmoitus- kirjaa vain kohtalokkaat ajonaikaiset virheet. Nämä ovat virheitä, joita komentosarja ei voi korjata, kuten muistin varausvirheet jne. Tässä tapauksessa komentosarjan suoritus lopetetaan. Käytä tätä varten numeroa "1".

Tietenkin voit käyttää muita arvoja ("numeroita") hienosäätääksesi mitä virheitä haluat tallentaa. Jotain selvennystä tähän kysymykseen on aivan pohjassa.

Tiedoston enimmäiskoon asettaminen virheiden tallentamista varten

Käyttämällä .htaccess-tiedostoa voit määrittää PHP-virheidesi enimmäiskoon. Tämä tarkoittaa kunkin tallennetun virheen koon tarkkailua, ei koko tiedoston kokoa. Syntaksi on seuraava:

# yleinen ohje virheen enimmäiskoon asettamiseksi log_errors_max_len integer_number

Tässä "kokonaisluku" edustaa kunkin kirjoitetun virherivin enimmäiskokoa tavuina. Oletusarvo on "1024" (eli 1 kilotavu). Voit poistaa tämän rajan asettamalla arvoksi "0". Huomaa, että tämä arvo koskee myös näkyviä virheitä, kun ne ovat käytössä (esimerkiksi kehityksen aikana).

Kaksoisvirheiden kirjaaminen poistetaan käytöstä

Jos olet jo työskennellyt virhelokin kanssa, olet ehkä huomannut, että se sisältää monia samankaltaisia ​​merkintöjä, jotka eroavat vain tapahtuman ajankohdasta. Voit päästä eroon tästä redundanssista lisäämällä seuraavat rivit htaccess-tiedostoosi:

# poista toistuvien virheiden tallennus käytöstä php_flag ignore_repeated_errors php_flag ignore_repeated_source päällä

Näillä asetuksilla toistuvia virheitä ei tallenneta sisäänkirjautumiseen, vaikka ne olisivat tapahtuneet eri lähteissä tai osoitteissa. Jos haluat poistaa päällekkäiset virheet vain yhdestä lähteestä tai tiedostosta, kommentoi tai poista viimeinen rivi. Sitä vastoin varmistaaksesi, että tapahtumalokitiedostosi sisältää kaikki päällekkäiset virheet, vaihda molemmat arvot päällä päällä pois.

Yhdistämällä kaikki - työympäristö

Keskusteltuamme PHP-virheen tallennuksen asettamisen ominaisuuksista, kootaan kaikki merkinnämme yhteen .htaccess-tiedostoon. Nämä asetukset on optimoitu työympäristöä varten.

# PHP-virheiden käsittely tuotantopalvelimelle 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_value_raport_ php_ e docref_root 0 php_value docref_ext 0 php_value error_log /home/path/public_html/domain/PHP_errors. loki php_value error_reporting -1 php_value log_errors_max_len 0 Tilaa salli, estä Estä kaikista Tyydytä kaikki

Jos pidät selityksiä sisältävää koodia hyvänä tyylinä, niin sama koodi, mutta kommentein:

# PHP-virheiden käsittely tuotantopalvelimelle # poista käynnistysvirheiden näyttö käytöstä php_flag display_startup_errors off # poista kaikkien muiden virheiden näyttö käytöstä php_flag display_errors off # poista html-merkintävirheet php_flag html_errors off # ota virheloki käyttöön php_flag log_errors päällä # s ota toistuvien virheiden huomioimatta php_flag ignore_repeated_errors off # poista virheiden huomioimatta jättäminen yksilöllisistä lähteistä php_flag ignore_repeated_source off # ota käyttöön php-muistivuotojen tallennus php_flag report_memleaks on # tallenna useimmat uusimmat virheet kautta php_errormsg virheen muotoilu viitelinkit php_value docref_ext 0 # määrittää polun php-virhelokitiedostoon php_value error_log /home/path/public_html/domain/PHP_errors.log # määritä tietue kaikista php-virheistä php_value error_reporting -1 # poista virheen enimmäispituus log_herr_orsma xx # suojaa virhelokitiedosto julkiselta pääsyltä Tilaa salli, estä Estä kaikista Tyydytä kaikki

Yllä oleva strategia on ihanteellinen julkiselle palvelimelle tuotantoympäristössä. Kaikki virheet ovat piilossa uteliailta silmiltä, ​​mutta ne on kerätty siististi ylläpitäjille ja ohjelmoijille. Tietenkin voit mukauttaa annettuja ohjeita tarpeisiisi täydellisesti. Katsotaan nyt strategiaa kehitysympäristön virheiden käsittelemiseksi.

Kaiken yhdistäminen - kehitysympäristö

Ohjelmaa kehitettäessä tai vianetsinnässä on helpompi seurata esiin tulevia PHP-virheitä reaaliajassa suoraan selaimessa. Alla on esimerkki .htaccess-tiedostosta, jossa on asianmukaiset asetukset kehitysympäristöön:

# työskentelee PHP-virheiden kanssa kehittäjäpalvelimille 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_flag on phme_flag on phprm p_value docref_root 0 php_value docref_ ext 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 Tilaa salli, estä Estä kaikista Tyydytä kaikki

Emme selitä jokaista riviä - näet vastaavat selitykset hieman korkeammalla.

Vihjeitä

Palvelimen lokitiedoston absoluuttisen polun selvittäminen PHP-menetelmillä (php_value error_log -direktiiville)

kaiku dirname(__TIEDOSTO__);

Esimerkki.htaccess for .

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_phprro 0 php_value docref_ext 0 php_value error_log C:ServerdatahtdocsPHP_errors.log php_value error_reporting -1 php_value log_errors_max_len 0 Tilaa salli, estä Estä kaikista Tyydytä kaikki

Ei toimi

Tätä menetelmää ei voida soveltaa hosting-palveluihin, joissa PHP toimii CGI:nä(mahdolliset ratkaisut näytetään seuraavassa artikkelissa).

-1 ja ~0 näyttääksesi kaikki PHP-virheet

Direktiivissä php_value error_reporting näyttääksesi kaikki määritetyt virheet -1 tai ~0 . Ne. rivit näyttävät tältä:

Php_value error_reporting -1 php_value error_reporting ~0

Lisäksi toista menetelmää pidetään oikeampana, eli käyttöä ~0 .

Ennalta määritetyt vakiot ja bittikohtaiset toiminnot error_reporting

  • Ennalta määritetyt vakiot
  • Bittikohtaiset operaattorit

Jos esimerkiksi haluamme tallentaa VAIN seuraavat virheet E_ERROR (arvo 1), E_WARNING (arvo 2), E_CORE_ERROR (arvo 16), niin vastaavan numeerisen arvon saamiseksi meidän on muutettava nämä arvot binääriluvuiksi ja Suorita vastaavat bittikohtaiset toiminnot ja sitten tuloksena oleva Muunna binääriluku desimaaliksi. Tätä toimintoa voidaan kuitenkin yksinkertaistaa - lisää vain desimaalilukujen arvot. Ne. meidän tapauksessamme se on 1+2+16=19

Php_value error_reporting 19

näyttää E_ERROR-, E_WARNING- ja E_CORE_ERROR-virheet.

Esimerkki absoluuttisesta polusta lokitiedostoon Hostland-palvelimella (php_value error_log -direktiiville)

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

Sijasta isäntä900456 sinun on ilmoitettava tilisi.

Sijasta verkkosivuilla sinun on määritettävä verkkotunnuksesi.

Muuten, hyvä isännöinti, jolla juuri tämä sivusto toimii. Suosittelemme!

20.6K

PHP on sulautettu palvelinpuolen ohjelmointikieli. Suuri osa sen syntaksista on lainattu C:stä, Javasta ja Perlistä. Pari ainutlaatuista PHP-kohtaista toimintoa on myös lisätty. Tämän kielen päätarkoitus on luoda dynaamisesti luotuja PHP HTML -sivuja.

PHP HTML:ksi

Kun luot monimutkaisia ​​verkkosivuja, sinun on yhdistettävä PHP ja HTML tiettyjen tehtävien suorittamiseksi. Ensi silmäyksellä tämä saattaa tuntua monimutkaiselta, koska PHP ja HTML ovat kaksi itsenäistä tieteenalaa, mutta näin ei ole. PHP on suunniteltu vuorovaikutukseen HTML:n kanssa, ja sen koodi voidaan sisällyttää sivun merkintöihin.

PHP-koodi sisällytetään HTML-sivuille erityisillä tunnisteilla. Kun käyttäjä avaa sivun, palvelin käsittelee PHP-koodin ja lähettää sitten käsittelyn tuloksen (ei PHP koodi) selaimeen.

HTML ja PHP on melko helppo yhdistää. Mikä tahansa PHP-skriptin osa tunnisteiden ulkopuolellaPHP-kääntäjä jättää sen huomiotta ja siirtää suoraan selaimeen. Jos katsot alla olevaa esimerkkiä, voit nähdä, että täydellinen PHP-skripti saattaa näyttää tältä:

Hei tänään.

Yllä oleva koodi on tavallista HTML-koodia, jossa on pieni osa PHP:tä, joka tulostaa nykyisen päivämäärän sisäänrakennetun päivämäärätoiminnon avulla. Tässä tapauksessa PHP-kääntäjä jättää huomioimatta kaiken HTML:n ja lähettää selaimeen muuttumattomana.

PHP:n integrointi HTML:ään on todella helppoa. Muista, että komentosarja on HTML-sivu, joka sisältää PHP-koodia. Voit luoda skriptin, joka sisältää vain HTML:n (ei tageja), ja se toimii hyvin.

Kehittyneemmät menetelmät:

  • Valikkokohta


ja tulos:

PHP HTML:ksi käyttämällä short_open_tag-tunnistetta

Jos sinun on tehtävä koodistasi mahdollisimman lyhyt ennen HTML:n lisäämistä PHP:hen, voit käyttää short_tags-tunnisteita. Tämän seurauksena sinun ei tarvitse kirjautua sisäänshort_tags"kanssa" Pois"to" Päällä". Vaikka useimmissa palvelimissa tämä vaihtoehto on jo käytössä, on aina parasta tarkistaa tämä manuaalisesti. Ongelma, joka voi syntyä käytettäessä lyhyitä tunnisteita, on ristiriita XML:ää käytettäessä. XML-syntaksilausekkeessa

PHP HTML:ksi käyttämällä short__tagia

Hei, tänään on.

Muista, että jos haluat luoda sivuston, joka on yhteensopiva mahdollisimman monen alustan kanssa, sinun ei pitäisi luottaa short_tagsiin, kun lisäät PHP:tä HTML:ään.

HTML PHP:hen kaiun avulla

Toinen tapa integroida HTML PHP-tiedostoon on komento echo:.

Tämä vaikuttaa merkintöjen korostuksiin useimmissa muokkausohjelmissa. Siksi on välttämätöntä korostaa kaikki lainausmerkit HTML-koodissa kenoviivalla.

PHP to HTML - tiedostolaajennukset

Normaalisti määritetylle verkkopalvelimelle:

AddHandler cgi-script .html .htm

FastCGI-verkkopalvelimelle:

AddHandler fcgid-script .html .htm

HTML PHP:ksi

Voit myös käyttää HTML-koodia PHP-skripteissä. Kun avaat sivun PHP:llä, sinun tarvitsee vain muuttaa avautuvien HTML- ja PHP-tunnisteiden järjestystä.