Βασικά στοιχεία χρήσης. Αναφορές, εκτύπωση στο πρόγραμμα Correct help report php

29 Δεκεμβρίου 2012 στις 10:01 μ.μ
  • Microsoft SQL Server

Συνεχίζουμε να εξετάζουμε χρήσιμες συμβουλές για αρχάριους κατά τη δημιουργία αναφορών στις Υπηρεσίες Αναφορών της Microsoft.
Την αρχή μπορείτε να την βρείτε εδώ:
Για όσους ενδιαφέρονται, κάντε κλικ παρακάτω...

0) Πώς να τοποθετήσετε πολλά στοιχεία ελέγχου σε ένα κελί πίνακα;
Αρκετά συχνά υπάρχει ανάγκη να τοποθετηθούν πολλά στοιχεία ελέγχου σε 1 κελί πίνακα. Εάν απλώς σύρετε ένα στοιχείο ελέγχου σε ένα κελί, το γεμίζει πλήρως. Ένα χειριστήριο που ονομάζεται Rectangle βοηθά να βγούμε από αυτήν την κατάσταση.

Το Rectangle είναι ένα ανάλογο του ελέγχου Panel που χρησιμοποιείται στα WinForms· είναι ένα είδος πλατφόρμας για την τοποθέτηση στοιχείων ελέγχου. Όταν τοποθετείται σε ένα κελί, το Ορθογώνιο γεμίζει ολόκληρο το κελί του πίνακα δημιουργώντας μια "πλατφόρμα" για την τοποθέτηση άλλων στοιχείων ελέγχου.

1) Ορίστε την προεπιλεγμένη γλώσσα αναφοράς
Κατά τη δημιουργία αναφορών, προσπαθήστε να δηλώσετε τη γλώσσα αναφοράς (Ιδιότητες αναφοράς - Γλώσσα).

Αυτό είναι πολύ χρήσιμο εάν εργάζεστε με έναν ξένο πελάτη του οποίου οι τοπικές ρυθμίσεις διαφέρουν από τις δικές σας. Εάν δεν γνωρίζετε ποιες ρυθμίσεις χρησιμοποιεί ο πελάτης σας, τότε μπορείτε να καθορίσετε την Έκφραση με το ακόλουθο περιεχόμενο:
=Χρήστης!Γλώσσα
Με αυτόν τον τρόπο θα αποφύγετε παρατυπίες στη μορφοποίηση αριθμητικών τιμών, ημερομηνιών, ωρών, νομισμάτων κ.λπ. που αναμένει ο πελάτης.
2) Σύνδεση χορδών
Μερικές φορές υπάρχει ανάγκη να «εισάγετε» την τιμή ενός πεδίου από τη βάση δεδομένων στο στατικό κείμενο μιας αναφοράς, που τοποθετείται, για παράδειγμα, σε ένα πλαίσιο κειμένου. Με άλλα λόγια, πρέπει να προσθέσετε γραμμές κειμένου σε 1 γραμμή. Το SSRS παρέχει έναν τελεστή "&" για αυτό το σκοπό.
Ας υποθέσουμε ότι στο texbox έχουμε ένα στατικό κείμενο «Hello, uv. Ιβάν Ιβάνοβιτς…». Πρέπει να αντικαταστήσουμε τον Ivan Ivanovich με το πλήρες όνομα από τη βάση δεδομένων, από το πεδίο fio. Για να το κάνετε αυτό, κάντε δεξί κλικ στο πλαίσιο κειμένου, καλέστε το μενού περιβάλλοντος, επιλέξτε την ιδιότητα Έκφραση του πλαισίου κειμένου και αλλάξτε το κείμενο ως εξής:
=" Γεια σου, uv. “&Fields!fio.Value&”…”
ενημέρωση:Όπως πρότεινε ο σεβαστός σε ένα σχόλιο, ένας πιο σωστός τρόπος για να συνδέσετε συμβολοσειρές είναι να χρησιμοποιήσετε το σύμβολο κράτησης θέσης.
Είναι εύκολο στη χρήση: στο texbox, πρέπει να τοποθετήσετε τον κέρσορα στο σημείο όπου σκοπεύετε να εισαγάγετε την τιμή από το πεδίο της βάσης δεδομένων. Κάντε δεξί κλικ για να ανοίξετε το μενού περιβάλλοντος και επιλέξτε "Δημιουργία κράτησης θέσης..."

Ορίστε την τιμή Label (αυτή η τιμή θα είναι ορατή στο κείμενο. Εάν δεν καθορίσετε μια τιμή για το πεδίο Label, θα χρησιμοποιηθεί το όνομα του πεδίου από τη βάση δεδομένων) και Value (στην περίπτωσή μας αυτό είναι ένα πεδίο από το βάση δεδομένων)

Η χρήση του placeholder παρέχει πρόσθετα πλεονεκτήματα:
1) Το κείμενο που βρίσκεται στο στοιχείο ελέγχου είναι ορατό (στη μέθοδο που περιέγραψα, ο χρήστης βλέπει μόνο το κείμενο <>, που προκαλεί σύγχυση σε ένα άτομο που βλέπει τον κωδικό αναφοράς για πρώτη φορά και χάνει το χρόνο του αναζητώντας την επιθυμητή Έκφραση.)
2) Το Placeholder σάς επιτρέπει να μορφοποιήσετε το πεδίο (ρυθμίστε τη μορφή δεδομένων, αλλάξτε τη γραμματοσειρά, το χρώμα, τη στοίχιση κ.λπ.) χωρίς να αλλάξετε τη μορφοποίηση του κύριου κειμένου.

Η διαφορά είναι εμφανής:

3) Τρόποι μορφοποίησης αριθμητικών δεδομένων
Το SSRS παρέχει πολλές επιλογές για τη μορφοποίηση δεδομένων. Ο απλούστερος τρόπος μορφοποίησης είναι να καθορίσετε τη μορφή (ιδιότητα Format) στις ιδιότητες ελέγχου.

Αυτή η μέθοδος έχει 2 μειονεκτήματα:
1) το στοιχείο ελέγχου περιέχει, εκτός από τα δεδομένα που υποτίθεται ότι έχουν μορφοποιηθεί, επιπλέον κείμενο.
2) κατά την εξαγωγή μιας αναφοράς σε CML
Αυτό το πρόβλημα μπορεί να λυθεί καλώντας ειδικές μεθόδους. Ας δούμε ένα παράδειγμα:
Το πλαίσιο κειμένου περιέχει το ακόλουθο κείμενο: "Αγαπητέ πελάτη, το υπόλοιπο στον λογαριασμό σας είναι: " & Fields!UserBalance.Value & " rub." .
Εάν δεν μορφοποιήσετε, τότε με την προϋπόθεση ότι η τιμή Fields!UserBalance.Value είναι 1005.35, μπορεί να εμφανιστεί στον χρήστη ως 1005.350000000000. Για να αποφύγετε ένα τέτοιο περιστατικό, είναι απαραίτητο να χρησιμοποιήσετε τη μέθοδο Μορφήή Αριθμός μορφής.
Παράδειγμα χρήσης: "Αγαπητέ πελάτη, το υπόλοιπο στον λογαριασμό σας είναι " & Format(Fields!UserBalance.Value,"#,##0.00") & "rub."
"Αγαπητέ πελάτη, το υπόλοιπο στον λογαριασμό σας είναι " & FormaNumber(Fields!UserBalance.Value,2) & "rub."
Όταν χρησιμοποιείτε το Format, πρέπει να χρησιμοποιείτε μια μάσκα μορφοποίησης, ενώ όταν χρησιμοποιείτε το FormaNumber, αρκεί να καθορίσετε τον αριθμό των δεκαδικών ψηφίων.
Σημείωση: η μέθοδος Μορφοποίηση ισχύει επίσης για τη μορφοποίηση ημερομηνίας, ώρας, χρημάτων κ.λπ.

4) Εξάγετε την αναφορά σε μορφή XML, προσαρμόστε τα πεδία
Το SSRS σάς επιτρέπει να εξάγετε μια αναφορά σε διαφορετικές μορφές, μία από αυτές είναι η CML. Κάθε στοιχείο ελέγχου αναφοράς έχει 3 ιδιότητες που είναι υπεύθυνες για τη συμπεριφορά κατά την εξαγωγή σε CML.

Ας τους ρίξουμε μια πιο προσεκτική ματιά:
DataElementName– είναι υπεύθυνο για το όνομα του στοιχείου στο HML, η προεπιλεγμένη τιμή δεν πληρούται. Εάν δεν εκτελέσετε αυτό το στοιχείο, τότε το όνομα στη CML θα αντιστοιχεί στο όνομα του στοιχείου ελέγχου.
Έξοδος DataElement– η ιδιότητα είναι υπεύθυνη για το εάν το στοιχείο θα εξαχθεί σε XML ή όχι. Τιμές που μπορούν να οριστούν:
Αυτο(προεπιλεγμένη τιμή) – το στοιχείο θα εξαχθεί εάν έχει τιμή· εάν η τιμή είναι μηδενική, τότε δεν θα εξαχθεί.
Παραγωγή– το στοιχείο εξάγεται πάντα.
NoOutput– το στοιχείο δεν εξάγεται σε HML
DataElementStyle– είναι υπεύθυνος για το στυλ ενός στοιχείου στο HML (είτε είναι στοιχείο είτε χαρακτηριστικό)
Τιμές που μπορούν να χρησιμοποιηθούν:
Αυτο(προεπιλεγμένη τιμή) – ανάλογα με το στοιχείο ελέγχου, θα εξαχθεί ως στοιχείο (κόμβος) ή χαρακτηριστικό (χαρακτηριστικό). Στην πραγματικότητα, μόνο το texbox εξάγεται ως χαρακτηριστικό από προεπιλογή, τα υπόλοιπα στοιχεία εξάγονται ως κόμβοι.
Χαρακτηριστικό– η τιμή θα παρουσιαστεί ως χαρακτηριστικό
Στοιχείο– η τιμή θα παρουσιαστεί ως στοιχείο (κόμβος)
Ένα σημαντικό χαρακτηριστικό: η ιδιότητα Hidden δεν ισχύει για την εξαγωγή σε CML. Επομένως, εάν στη CML σκοπεύετε να εξαγάγετε ένα στοιχείο που εμφανίζεται ή δεν βασίζεται σε μια συνθήκη, τότε αυτή η συνθήκη πρέπει να μεταφερθεί στο στοιχείο ελέγχου Expression. Παράδειγμα: ένα πλαίσιο κειμένου περιέχει κείμενο που εμφανίζεται μόνο όταν η συνθήκη πεδίου = 1. Τότε η Έκφραση θα μοιάζει με αυτό:
=IIF(Πεδία!Συνθήκη.Τιμή = 1, "Κάποιο κείμενο","")

Αυτό είναι όλο για σήμερα, για να συνεχιστεί.

Η μεγαλύτερη λειτουργικότητα είναι διαθέσιμη κατά την εκτέλεση του σαρωτή AI-BOLIT σε λειτουργία γραμμής εντολών. Αυτό μπορεί να γίνει τόσο με Windows/Unix/Mac OS X όσο και απευθείας στη φιλοξενία, εάν έχετε πρόσβαση μέσω SSH και η φιλοξενία δεν περιορίζει σημαντικά τους πόρους του επεξεργαστή που καταναλώνονται.

Λάβετε υπόψη ότι για την εκτέλεση του σαρωτή, απαιτείται η έκδοση κονσόλας PHP 5.3 και νεότερη. Στην έκδοση 5.2 θα υπάρχει ένα σφάλμα "Σφάλμα ανάλυσης: σφάλμα σύνταξης, απροσδόκητο T_STRING, αναμένεται T_OLD_FUNCTION ή T_FUNCTION ή T_VAR ή ")" στο /home/ХХХ/ai-bolit.php on line...". Ελέγξτε την τρέχουσα έκδοση με php -v

Βοήθεια με τις παραμέτρους της γραμμής εντολών του σαρωτή AI-BOLIT

Δείξτε βοήθεια

php ai-bolit.php --help

php ai-bolit.php --skip=jpg,png,gif,jpeg,JPG,PNG,GIF,bmp,xml,zip,rar,css,avi,mov

Σαρώστε μόνο ορισμένες επεκτάσεις

php ai-bolit.php --scan=php,php5,pht,phtml,pl,cgi,htaccess,suspected,tpl

Ετοιμάστε ένα αρχείο καραντίνας για αποστολή σε ειδικούς ασφαλείας. Θα δημιουργηθεί ένα αρχείο AI-QUARANTINE-XXXX.zip με κωδικό πρόσβασης.

php ai-bolit.php --καραντίνα

Εκτελέστε το σαρωτή σε λειτουργία "παρανοϊκής" (συνιστάται για να λάβετε την πιο λεπτομερή αναφορά)

php ai-bolit.php --mode=2

php ai-bolit.php --mode=1

Ελέγξτε ένα αρχείο "pms.db" για κακόβουλο κώδικα

php ai-bolit.php -jpms.db

Εκτελέστε το σαρωτή με μέγεθος μνήμης 512 Mb

php ai-bolit.php --memory=512M

Ορίστε το μέγιστο μέγεθος σαρωμένου αρχείου στα 900 Kb

php ai-bolit.php --size=900K

Παύση 500 ms μεταξύ των αρχείων κατά τη σάρωση (για μείωση του φορτίου)

php ai-bolit.php --delay=500

Αποστολή αναφοράς σάρωσης μέσω email [email προστατευμένο]

php ai-bolit.php [email προστατευμένο]

Δημιουργήστε μια αναφορά στο αρχείο /home/scanned/report_site1.html

php ai-bolit.php --report=/home/scanned/report_site1.html

Σαρώστε τον κατάλογο /home/s/site1/public_html/ (η προεπιλεγμένη αναφορά θα δημιουργηθεί εκεί εάν δεν έχει καθοριστεί η επιλογή --report=report_file)

php ai-bolit.php --path=/home/s/site1/public_html/

Εκτελέστε την εντολή όταν ολοκληρωθεί η σάρωση.

php ai-bolit.php --cmd="~/postprocess.sh"

Λάβετε μια αναφορά σε απλό κείμενο με το όνομα site1.txt

php ai-bolit.php -lsite1.txt

Μπορείτε να συνδυάσετε κλήσεις, για παράδειγμα,

php ai-bolit.php --size=300K --path=/home/s/site1/public_html/ --mode=2 --scan=php,phtml,pht,php5,pl,cgi,suspected

Συνδυάζοντας την κλήση του σαρωτή AI-BOLIT με άλλες εντολές Unix, μπορείτε να εκτελέσετε, για παράδειγμα, μια μαζική σάρωση τοποθεσιών. Παρακάτω είναι ένα παράδειγμα ελέγχου πολλών τοποθεσιών που φιλοξενούνται σε έναν λογαριασμό. Για παράδειγμα, εάν οι ιστότοποι βρίσκονται μέσα στον κατάλογο /var/www/user1/data/www, τότε η εντολή για την εκκίνηση του σαρωτή θα είναι

βρείτε /var/www/user1/data/www -maxdepth 1 -type d -exec php ai-bolit.php --path=() --mode=2 \;

Προσθέτοντας την παράμετρο --report, μπορείτε να ελέγξετε τον κατάλογο στον οποίο θα δημιουργηθούν οι αναφορές σάρωσης.

php ai-bolit.php λίστα παραμέτρων... --eng

Αλλάξτε τη διεπαφή αναφοράς στα Αγγλικά. Αυτή η παράμετρος πρέπει να είναι τελευταία.

Ενσωμάτωση με άλλες υπηρεσίες και στον πίνακα φιλοξενίας

php ai-bolit.php --json_report=/path/file.json

Δημιουργήστε μια αναφορά σε μορφή json

php ai-bolit.php --progress=/path/progress.json

Αποθηκεύστε την κατάσταση επαλήθευσης σε ένα αρχείο σε μορφή json. Αυτό το αρχείο θα περιέχει δομημένα δεδομένα σε μορφή json: το τρέχον αρχείο σάρωσης, πόσα αρχεία έχουν σαρωθεί, πόσα αρχεία έχουν απομείνει για σάρωση, το ποσοστό σάρωσης, ο χρόνος μέχρι την ολοκλήρωση της σάρωσης. Αυτός ο μηχανισμός μπορεί να χρησιμοποιηθεί για την εμφάνιση μιας γραμμής προόδου και δεδομένων σχετικά με τα αρχεία που σαρώνονται στον πίνακα. Μόλις ολοκληρωθεί η σάρωση, το αρχείο διαγράφεται αυτόματα.

php ai-bolit.php --handler=/path/hander.php

Εξωτερικός χειριστής συμβάντων. Μπορείτε να προσθέσετε τους δικούς σας χειριστές σφαλμάτων έναρξης/λήξης/προόδου σάρωσης/σάρωσης. Ένα παράδειγμα αρχείου μπορεί να προβληθεί στο αρχείο του σαρωτή, στον κατάλογο tools/handler.php. Για παράδειγμα, αφού ολοκληρωθεί η σάρωση, μπορείτε να κάνετε κάτι με το αρχείο αναφοράς (αποστολή μέσω ταχυδρομείου, αρχειοθέτηση κ.λπ.).

Σε αυτό το μάθημα θα μάθουμε κάτι τέτοιο όπως η απόκρυψη σφαλμάτων PHP. Στην πορεία, θα εξετάσουμε επίσης πώς να καταστείλετε όχι μόνο την έξοδο αυτών των σφαλμάτων, αλλά και πώς να τα γράψετε σε ένα αρχείο καταγραφής, πώς να προστατέψετε αυτό το αρχείο καταγραφής, πώς να ρυθμίσετε το επίπεδο αναφοράς σφαλμάτων PHP (πόσο σοβαρά σφάλματα για εμφάνιση, εάν θα εμφανίζονται προειδοποιήσεις), μάθετε πώς να ορίζετε τις γραμμές σφάλματος μέγιστου μεγέθους και να απενεργοποιείτε την εγγραφή επαναλαμβανόμενων σφαλμάτων.

Πρέπει να κρύψω τα σφάλματα PHP;

Τα σφάλματα PHP παρέχουν μια μεγάλη ποικιλία πληροφοριών που επιτρέπουν στους εισβολείς να συλλέγουν δεδομένα σχετικά με τον ιστότοπό σας και τον διακομιστή σας. Αλλά αν η απάντηση σε αυτήν την ερώτηση ήταν ένα σαφές «ναι», τότε όλα θα λυνόταν προσθέτοντας μία μόνο γραμμή σε κάθε αρχείο με προγράμματα PHP

Error_reporting(0);

Στην πραγματικότητα, όλα τα σφάλματα, συμπεριλαμβανομένων των προειδοποιήσεων (μη κρίσιμα σφάλματα) θα πρέπει να εμφανίζονται στο στάδιο της δοκιμής. Η εμφάνιση σφαλμάτων και προειδοποιήσεων θα σας βοηθήσει επίσης να κατανοήσετε τα υπάρχοντα (ή πιθανά) προβλήματα στο εργασιακό σας περιβάλλον. Δεν πρέπει να καταστέλλετε την εμφάνιση σφαλμάτων και προειδοποιήσεων σε προγράμματα που προορίζονται για δωρεάν διανομή, γιατί εάν προκύψουν προβλήματα, όλες οι αναφορές χρηστών για προβλήματα θα είναι ίδιες: "υπάρχει μια λευκή οθόνη", η οποία θα περιπλέξει πολύ τις προσπάθειες να το καταλάβετε.

Σε γενικές γραμμές, σε διακομιστές που προορίζονται για ανάπτυξη (για παράδειγμα, σε οικιακό διακομιστή), δεν υπάρχει ανάγκη εκκαθάρισης σφαλμάτων και προειδοποιήσεων χρησιμοποιώντας μεθόδους PHP error_reporting(0); Και @ – πρέπει να μελετήσετε τις αιτίες τους και να διορθώσετε τον πηγαίο κώδικα.

Στους διακομιστές παραγωγής, συνιστάται ιδιαίτερα να μην εμφανίζονται σε όλους τα σφάλματα που συνέβησαν στον κώδικα PHP, αλλά συνιστάται όχι μόνο να αποκρύπτετε την εμφάνισή τους, αλλά και να διατηρείτε ένα αρχείο καταγραφής τους, να τα γράφετε για τον διαχειριστή του συστήματος και για την PHP προγραμματιστής - από αυτά τα αρχεία καταγραφής θα λάβουν σημαντικές πληροφορίες σχετικά με πιθανά προβλήματα στον ιστότοπο/διακομιστή.

Πώς να ενεργοποιήσετε την καταγραφή σφαλμάτων PHP μέσω .htaccess

Σε αυτό το μέρος του σεμιναρίου θα δείξω στους χρήστες Apache πώς να καταστείλουν την έξοδο των σφαλμάτων PHP και να τα αποκρύψουν από τους επισκέπτες, ενώ η καταγραφή σφαλμάτων PHP θα ενεργοποιηθεί για περαιτέρω ανάλυση, όλη αυτή η ρύθμιση παραμέτρων θα γίνει μέσω του αρχείου .htaccess.

Σε γενικές γραμμές, αυτή η μέθοδος έχει ένα άλλο υπέροχο πλεονέκτημα - αντί να προσπαθούμε να συλλάβουμε όλα τα σφάλματα και τις προειδοποιήσεις PHP, θα καταγράψουμε καθένα από αυτά στο προσωπικό μας αρχείο καταγραφής, χάρη σε αυτό δεν θα διαφύγει ούτε ένα σφάλμα που θα προκύψει, ακόμα κι αν δεν προέκυψε από εσάς και από κάποιον που επισκέπτεται τον ιστότοπό σας υπό συνθήκες που, ίσως, δεν θα μπορούσατε καν να σκεφτείτε για μοντελοποίηση. Ευχαριστώ, υπάρχει ένας εύκολος τρόπος εφαρμογής αυτής της αποτελεσματικής στρατηγικής.

Απόκρυψη σφαλμάτων PHP από τους επισκέπτες

Υπάρχουν διάφοροι τρόποι για να καταστείλετε σφάλματα PHP χρησιμοποιώντας .htaccess. Αυτό μπορεί να γίνει συμπεριλαμβάνοντας τις ακόλουθες οδηγίες .htaccess στο αρχείο httpd.conf του τομέα σας ή στη ρίζα (ή σε οποιονδήποτε άλλο κατάλογο προορισμού) του αρχείου .htaccess με το ακόλουθο περιεχόμενο:

# 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

Αυτό θα έχει ως αποτέλεσμα τα σφάλματα PHP να μην είναι πλέον δημόσια στον ιστότοπό σας. Αυτό εξαλείφει πιθανούς κινδύνους ασφαλείας και αποτρέπει αυτά τα άσχημα, ακατανόητα σφάλματα PHP από το να σπάσουν τη διάταξη του ιστότοπού σας και να αποπροσανατολίσουν τους επισκέπτες σας. Δεν απαιτείται επεξεργασία κώδικα για αυτό.

Ενεργοποίηση προσωπικής καταγραφής σφαλμάτων PHP

Τώρα που έχουμε κρύψει τα σφάλματα PHP από το κοινό, ας ενεργοποιήσουμε την καταγραφή (καταγραφή) τους ώστε να μπορούμε να τα εντοπίσουμε. Αυτό γίνεται προσθέτοντας τις ακόλουθες οδηγίες .htaccess στο αρχείο httpd.conf του τομέα σας ή στο αρχείο .htaccess που τοποθετείται στον ριζικό κατάλογο (ή σε οποιονδήποτε στόχο).

# enable PHP σφάλμα καταγραφής php_flag log_errors στο php_value error_log /home/path/public_html/domain/PHP_errors.log

Για να λειτουργήσει αυτό, πρέπει να επεξεργαστείτε τη διαδρομή στην τελευταία γραμμή ώστε να ταιριάζει με την πραγματική θέση του αρχείου PHP_errors.log. Φυσικά, μαζί με αυτό θα πρέπει να δημιουργήσετε αυτό το αρχείο και να του δώσετε δικαιώματα 755 ή αν χρειάζεται 777. Τέλος, πρέπει να ασφαλίσετε αυτό το αρχείο καταγραφής προσθέτοντας αυτές τις τελικές γραμμές κώδικα στο αρχείο .htaccess:

# αποτρέψτε την πρόσβαση στο αρχείο καταγραφής σφαλμάτων PHP

Τώρα που όλα είναι στη θέση τους, ελέγξτε ότι όλα λειτουργούν σωστά ρίχνοντας μερικά σφάλματα PHP. Μπορεί επίσης να θέλετε να δοκιμάσετε την ασφάλεια του αρχείου καταγραφής σας προσπαθώντας να αποκτήσετε πρόσβαση σε αυτό μέσω ενός προγράμματος περιήγησης.

Προηγμένος χειρισμός σφαλμάτων PHP με .htaccess

Ας εμβαθύνουμε τώρα σε αυτό το θέμα, ας προσθέσουμε επιπλέον λειτουργικότητα και ας εξερευνήσουμε διαφορετικές υλοποιήσεις. Αρχικά θα εξετάσουμε τον χειρισμό σφαλμάτων PHP για περιβάλλοντα παραγωγής (για παράδειγμα, ιστότοπους και εφαρμογές που είναι online, ενεργές και δημόσιες), στη συνέχεια θα εξετάσουμε τον χειρισμό σφαλμάτων για περιβάλλοντα προγραμματιστών (για παράδειγμα, έργα υπό ανάπτυξη, δοκιμή , ιδιωτική, κ.λπ.).

Έλεγχος επιπέδου αναφοράς σφαλμάτων PHP

Χρησιμοποιώντας το .htaccess είναι δυνατό να προσαρμόσετε το επίπεδο αναφοράς σφαλμάτων ώστε να ταιριάζει στις πρακτικές σας ανάγκες. Ένα γενικό οχυρό για την παρακολούθηση των ποσοστών σφαλμάτων PHP είναι το εξής:

# γενική άποψη της οδηγίας για τη ρύθμιση του επιπέδου σφάλματος php php_value error_reporting number

Υπάρχουν πολλές κοινές τιμές που μπορούν να αντικατασταθούν με το "ψηφίο", όπως:

  • Το πληρέστερο μήνυμα σφάλματος(αντιστοιχεί στο E_ALL) - για αυτό χρησιμοποιήστε την τιμή "32767".
  • Πλήρες μήνυμα σφάλματος- Για την πλήρη καταγραφή των σφαλμάτων PHP, χρησιμοποιήστε την τιμή "8191", η οποία θα περιλαμβάνει την καταγραφή όλων εκτός από τις ειδοποιήσεις χρόνου εκτέλεσης σχετικά με τη χρήση καταργημένων δομών (προειδοποιήσεις σχετικά με κώδικα που δεν θα λειτουργήσει σε μελλοντικές εκδόσεις της PHP).
  • Αναφορά σφαλμάτων Zend- Για να καταγράψετε μοιραίες και μη μοιραίες προειδοποιήσεις χρόνου μεταγλώττισης που δημιουργούνται από τη μηχανή δέσμης ενεργειών Zend, χρησιμοποιήστε το "192".
  • Αναφορά βασικών σφαλμάτων- εγγραφή ειδοποιήσεων χρόνου εκτέλεσης. Υποδείξτε ότι συνέβη κάτι κατά την εκτέλεση του σεναρίου που μπορεί να υποδεικνύει σφάλμα, αν και μπορεί επίσης να συμβεί κατά την κανονική εκτέλεση του προγράμματος. Για να το κάνετε αυτό, χρησιμοποιήστε τον αριθμό "8".
  • Ελάχιστα μηνύματα σφάλματος- καταγραφή μόνο μοιραίων σφαλμάτων χρόνου εκτέλεσης. Πρόκειται για σφάλματα που δεν μπορούν να διορθωθούν από το ίδιο το σενάριο, όπως σφάλματα εκχώρησης μνήμης κ.λπ. Σε αυτήν την περίπτωση, η εκτέλεση του σεναρίου τερματίζεται. Για να το κάνετε αυτό, χρησιμοποιήστε τον αριθμό "1".

Φυσικά, μπορείτε να χρησιμοποιήσετε άλλες τιμές ("αριθμούς") για να ρυθμίσετε τα σφάλματα που θέλετε να καταγράψετε. Ορισμένες διευκρινίσεις σχετικά με αυτό το θέμα βρίσκονται στο κάτω μέρος.

Ρύθμιση του μέγιστου μεγέθους αρχείου για την καταγραφή των σφαλμάτων σας

Χρησιμοποιώντας .htaccess μπορείτε να ορίσετε το μέγιστο μέγεθος για τα σφάλματα PHP. Αυτό σημαίνει παρακολούθηση του μεγέθους κάθε καταγεγραμμένου σφάλματος και όχι ολόκληρου του αρχείου στο σύνολό του. Η σύνταξη έχει ως εξής:

# γενική οδηγία για τον καθορισμό του μέγιστου μεγέθους σφάλματος log_errors_max_len integer_number

Εδώ, το "integer_number" αντιπροσωπεύει το μέγιστο μέγεθος σε byte κάθε γραμμής σφάλματος που γράφτηκε. Η προεπιλεγμένη τιμή είναι "1024" (δηλαδή 1 kilobyte). Για να αφαιρέσετε αυτό το όριο, μπορείτε να ορίσετε την τιμή σε "0". Λάβετε υπόψη ότι αυτή η τιμή ισχύει επίσης για σφάλματα που εμφανίζονται όταν είναι ενεργοποιημένα (για παράδειγμα, κατά την ανάπτυξη).

Απενεργοποίηση της καταγραφής διπλότυπων σφαλμάτων

Εάν έχετε ήδη εργαστεί με το αρχείο καταγραφής σφαλμάτων, ίσως έχετε παρατηρήσει ότι περιέχει πολλές παρόμοιες εγγραφές που διαφέρουν μόνο ως προς την ώρα του συμβάντος. Μπορείτε να απαλλαγείτε από αυτόν τον πλεονασμό προσθέτοντας απλώς αυτές τις γραμμές στο αρχείο htaccess:

# απενεργοποιήστε την εγγραφή επαναλαμβανόμενων σφαλμάτων php_flag ignore_repeated_errors στο php_flag ignore_repeated_source στο

Με αυτές τις ρυθμίσεις, τα επαναλαμβανόμενα σφάλματα δεν θα καταγράφονται στα loginal, ακόμα κι αν εμφανίστηκαν σε διαφορετικές πηγές ή διευθύνσεις. Εάν θέλετε να απενεργοποιήσετε τα διπλά σφάλματα από μία μόνο πηγή ή αρχείο, απλώς σχολιάστε ή διαγράψτε την τελευταία γραμμή. Αντίθετα, για να βεβαιωθείτε ότι το αρχείο καταγραφής συμβάντων περιλαμβάνει όλα τα διπλότυπα σφάλματα, αλλάξτε και τις δύο τιμές από επίεπί μακριά από.

Συνδυάζοντας τα όλα μαζί - το εργασιακό περιβάλλον

Έχοντας συζητήσει τις δυνατότητες ρύθμισης της εγγραφής σφαλμάτων PHP, ας συγκεντρώσουμε όλες τις καταχωρήσεις μας σε ένα αρχείο .htaccess. Αυτές οι ρυθμίσεις είναι βελτιστοποιημένες για το περιβάλλον εργασίας.

# Χειρισμός σφαλμάτων PHP για διακομιστή παραγωγής 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 report_repephameflag στο php_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 Παραγγείλετε να επιτρέπεται, αρνηθείτε την άρνηση από όλους Ικανοποιήστε όλα

Εάν θεωρείτε ότι ο κώδικας με επεξηγήσεις είναι καλό στυλ, τότε ο ίδιος κώδικας, αλλά με σχόλια:

# χειρισμός σφαλμάτων PHP για τον διακομιστή παραγωγής # απενεργοποιήστε την εμφάνιση σφαλμάτων εκκίνησης php_flag display_startup_errors off # απενεργοποιήστε την εμφάνιση όλων των άλλων σφαλμάτων php_flag display_errors off # disable html markup errors php_flag html_errors off # enable error logaging php_flag on php_flag php_flag ignore_repeated_errors off # disable παράβλεψη σφαλμάτων από μοναδικές πηγές php_flag ignore_repeated_source off # ενεργοποίηση εγγραφής διαρροών μνήμης php php_flag report_memleaks στις # αποθήκευση των περισσότερων από τα πιο πρόσφατα σφάλματα μέσω php_errorflag σε μορφή αναφοράς php_errormsg cref_root 0 # απενεργοποιήστε τη μορφοποίηση του σφάλματος σύνδεσμοι αναφοράς php_value docref_ext 0 # καθορισμός της διαδρομής προς το αρχείο καταγραφής σφαλμάτων php php_value error_log /home/path/public_html/domain/PHP_errors.log # καθορίστε μια εγγραφή όλων των σφαλμάτων php php_value error error_reporting -1_value error length_reporting_php_valuemax # προστατέψτε το αρχείο καταγραφής σφαλμάτων από δημόσια πρόσβαση Παραγγείλετε να επιτρέπεται, αρνηθείτε την άρνηση από όλους Ικανοποιήστε όλα

Η παραπάνω στρατηγική είναι ιδανική για δημόσιο διακομιστή σε περιβάλλον παραγωγής. Όλα τα σφάλματα είναι κρυμμένα από τα αδιάκριτα βλέμματα, αλλά συλλέγονται προσεκτικά για διαχειριστές και προγραμματιστές. Φυσικά, μπορείτε να προσαρμόσετε τις συγκεκριμένες οδηγίες ώστε να ταιριάζουν απόλυτα στις ανάγκες σας. Τώρα ας δούμε μια στρατηγική για την αντιμετώπιση σφαλμάτων για το περιβάλλον ανάπτυξης.

Συνδυάζοντας τα όλα μαζί - το περιβάλλον ανάπτυξης

Κατά την ανάπτυξη ή τον εντοπισμό σφαλμάτων ενός προγράμματος, είναι πιο βολικό να παρακολουθείτε τα αναδυόμενα σφάλματα PHP σε πραγματικό χρόνο, απευθείας στο πρόγραμμα περιήγησης. Ένα παράδειγμα .htaccess με τις κατάλληλες ρυθμίσεις για το περιβάλλον ανάπτυξης δίνεται παρακάτω:

# εργασία με σφάλματα PHP για διακομιστές προγραμματιστών 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_flag ignorephags_errors σφάλματα στο php_value 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 Παραγγείλετε να επιτρέπεται, αρνηθείτε την άρνηση από όλους Ικανοποιήστε όλα

Δεν θα εξηγήσουμε κάθε γραμμή - μπορείτε να δείτε τις αντίστοιχες εξηγήσεις λίγο ψηλότερα.

Συμβουλές

Για να μάθετε την απόλυτη διαδρομή προς το αρχείο καταγραφής στον διακομιστή χρησιμοποιώντας μεθόδους PHP (για την οδηγία php_value error_log)

echo dirname(__FILE__);

Example.htaccess για .

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_flagsp report_me root 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 Παραγγείλετε να επιτρέπεται, αρνηθείτε την άρνηση από όλους Ικανοποιήστε όλα

Δεν δουλεύει

Αυτή η μέθοδος δεν εφαρμόζεται σε κεντρικούς υπολογιστές όπου η PHP εκτελείται ως CGI(οι πιθανές λύσεις θα παρουσιαστούν στο επόμενο άρθρο).

-1 και ~0 για εμφάνιση όλων των σφαλμάτων PHP

Στην οδηγία php_value error_reportingγια να εμφανίσετε όλα τα σφάλματα που μπορείτε να καθορίσετε -1 ή ~0 . Εκείνοι. οι γραμμές μοιάζουν με αυτό:

Php_value error_reporting -1 php_value error_reporting ~0

Επιπλέον, η δεύτερη μέθοδος θεωρείται πιο σωστή, δηλαδή η χρήση ~0 .

Προκαθορισμένες σταθερές και bitwise λειτουργίες error_reporting

  • Προκαθορισμένες σταθερές
  • Χειριστές bitwise

Για παράδειγμα, εάν θέλουμε να καταγράψουμε ΜΟΝΟ τα ακόλουθα σφάλματα E_ERROR (τιμή 1), E_WARNING (τιμή 2), E_CORE_ERROR (τιμή 16), τότε για να λάβουμε την αντίστοιχη αριθμητική τιμή θα πρέπει να μετατρέψουμε αυτές τις τιμές σε δυαδικούς αριθμούς και εκτελέστε τις αντίστοιχες λειτουργίες bitwise και, στη συνέχεια, το προκύπτον Μετατρέψτε έναν δυαδικό αριθμό σε δεκαδικό. Ωστόσο, αυτή η λειτουργία μπορεί να απλοποιηθεί - απλώς προσθέστε τις τιμές των δεκαδικών αριθμών. Εκείνοι. στην περίπτωσή μας είναι 1+2+16=19

Php_value error_reporting 19

θα εμφανίσει σφάλματα E_ERROR, E_WARNING και E_CORE_ERROR.

Ένα παράδειγμα απόλυτης διαδρομής σε ένα αρχείο καταγραφής στη φιλοξενία Hostland (για την οδηγία php_value error_log)

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

Αντί host900456πρέπει να δηλώσετε τον λογαριασμό σας.

Αντί δικτυακός τόποςπρέπει να καθορίσετε τον τομέα σας.

Παρεμπιπτόντως, καλή φιλοξενία στην οποία τρέχει αυτός ο ιστότοπος. Συνιστούμε!

Ο συντελεστής χωρητικότητας φόρτου διακομιστή είναι μία από τις παραμέτρους των λογαριασμών SaaS. Κάθε πρόγραμμα χρέωσης έχει τις δικές του παραμέτρους φορτίου. Μπορείτε πάντα να προβάλετε τον τρέχοντα λογαριασμό στον προσωπικό σας λογαριασμό στο σύστημα CRM.

Μερικές φορές μπορεί να προκύψει μια κατάσταση όπου ο λογαριασμός που χρησιμοποιείτε παράγει ένα φορτίο που είναι υψηλότερο από το επιτρεπόμενο στο πρόγραμμα τιμολόγησης σας. Θα ενημερωθείτε σχετικά με σχετική επιστολή.

Οι κύριες παράμετροι που επηρεάζουν το φορτίο:

  • Ο αριθμός των χρηστών στο σύστημα που εργάζονται ταυτόχρονα.
  • Αριθμός εγγραφών στους πίνακες προγραμμάτων.
  • Αριθμός κανόνων και ομάδων πρόσβασης.
  • Αριθμός υπενθυμίσεων, μορφοποίηση χρώματος, φίλτρα κ.λπ.
  • Ο αριθμός των υπολογισμών και η πολυπλοκότητά τους.
  • Αριθμός εργασιών που εκτελούνται στο παρασκήνιο (μέσω του συστήματος Cron).
  • Αριθμός ταχυδρομικών αποστολών (email και SMS).
  • Αριθμός αναφορών.
  • Όγκος καταγραφής προγράμματος.

Επομένως, εάν ορισμένες ομάδες πρόσβασης, μορφοποίηση χρώματος, φίλτρα και άλλα στοιχεία διαμόρφωσης δεν χρησιμοποιούνται, τότε συνιστάται να τα διαγράψετε. Μπορείτε επίσης να αφαιρέσετε περιττές εγγραφές από πίνακες. Εκτός από την κατάργηση στοιχείων διαμόρφωσης, μπορείτε να λάβετε άλλα μέτρα για να μειώσετε το φόρτο του διακομιστή. Θα συζητηθούν λεπτομερέστερα παρακάτω.

Όλα τα μέτρα για τη μείωση του φορτίου μπορούν να χωριστούν σε δύο μέρη: για διαχειριστές και για προγραμματιστές. Αυτά τα μέτρα μπορούν επίσης να μειώσουν το φόρτο του διακομιστή κατά τη χρήση της έκδοσης web του προγράμματος.

Οδηγίες για διαχειριστές

Έναρξη βελτιστοποίησης

Το πρώτο πράγμα που πρέπει να κάνετε είναι να βεβαιωθείτε ότι χρησιμοποιείτε την πιο πρόσφατη έκδοση του προγράμματος. Μπορείτε να το επαληθεύσετε μεταβαίνοντας στις "Ρυθμίσεις" - "Για προχωρημένους" - "Ενημέρωση αναθεώρησης". Εάν χρησιμοποιείτε την πιο πρόσφατη έκδοση και αναθεώρηση του προγράμματος, θα δείτε ένα αντίστοιχο μήνυμα

Εάν χρησιμοποιείτε μια παλιά έκδοση ή αναθεώρηση, το πρόγραμμα θα σας ζητήσει να ενημερώσετε.

Στη συνέχεια, θα πρέπει να εκτελέσετε μια εκτεταμένη σάρωση συστήματος. Για να το κάνετε αυτό, μεταβείτε στις "Ρυθμίσεις" - "Για προχωρημένους" - "Σάρωση συστήματος" και κάντε κλικ στο κουμπί "Σάρωση συστήματος για προχωρημένους". Εάν παρουσιαστούν σφάλματα στο πρόγραμμα, θα διορθωθούν αυτόματα.

Γενικές ρυθμίσεις προγράμματος

Μεταβείτε στις "Ρυθμίσεις" - "Για προχωρημένους" - "Γενικές ρυθμίσεις". Υπάρχουν δύο σημεία που αξίζει να προσέξουμε εδώ.

Διαισθητική αναζήτηση - Μπορείτε να απενεργοποιήσετε αυτήν την επιλογή εάν δεν χρειάζεται να κάνετε αναζήτηση με μεταγραφή του νοήματος.

Λειτουργία κύλισης παραθύρου - Μπορείτε να διαβάσετε περισσότερα σχετικά με τις λειτουργίες κύλισης παραθύρου στην τεκμηρίωσή μας. Συνιστάται να ορίσετε αυτή τη ρύθμιση σε "Απλή".

Ρυθμίσεις Cron

Μεταβείτε στις "Ρυθμίσεις" - "Για προχωρημένους" - "Ρυθμίσεις Cron". Στις ρυθμίσεις Cron μπορείτε να διαχειριστείτε εργασίες που εκτελούνται αυτόματα στο παρασκήνιο. Για παράδειγμα, συγχρονισμός, αποστολή επιστολών και SMS. Υπάρχουν δύο τρόποι για να μειώσετε το φορτίο λόγω αυτής της ρύθμισης.

1. Απαγορεύστε την εκτέλεση εργασιών που δεν χρησιμοποιείτε στο πρόγραμμά σας. Μπορείτε να το κάνετε αυτό ανοίγοντας την επιθυμητή εργασία και επιλέγοντας το πλαίσιο ελέγχου "Απαγόρευση εκτέλεσης".

Για παράδειγμα, εάν δεν χρησιμοποιείτε τη λειτουργία συγχρονισμού, ανοίξτε την αντίστοιχη εργασία και επιλέξτε το πλαίσιο ελέγχου «Απαγόρευση εκτέλεσης» στις ρυθμίσεις της. Εάν δεν χρησιμοποιείτε τη λειτουργία αποστολής SMS, μπορείτε να απαγορεύσετε την εκτέλεση των εργασιών «Δημιουργία SMS», «Αποστολή SMS», «Έλεγχος της κατάστασης παράδοσης SMS».

2. Αλλάξτε τη συχνότητα των εργασιών. Αυτό μπορεί να γίνει μεταβαίνοντας στις ρυθμίσεις εργασιών και αλλάζοντας την τιμή στο πεδίο "Περίοδος". Για παράδειγμα, στην εργασία «Αποστολή γραμμάτων», μπορείτε να καθορίσετε ότι αντί για κάθε λεπτό, η εργασία θα πρέπει να εκτελείται μία φορά κάθε 5 λεπτά.

Ρύθμιση συνθηκών υπολογισμού

Το λογισμικό CRM χρησιμοποιεί υπολογισμούς για αυτόματη συμπλήρωση ορισμένων πεδίων. Αλλά μερικές φορές οι συνθήκες για την εφαρμογή τους δεν είναι βέλτιστες. Για παράδειγμα, το φορτίο προκαλείται από τη συνθήκη Εμφάνιση πεδίου στη ρύθμιση υπολογισμού. Η χρήση του πρέπει να αποφεύγεται.

Για παράδειγμα, εάν έχουμε έναν υπολογισμό στον οποίο το άθροισμα των πεδίων Β και Γ εισάγεται στο πεδίο Α, τότε καλό είναι να χρησιμοποιήσουμε τις προϋποθέσεις «Αλλαγή πεδίου Β» και «Αλλαγή πεδίου Γ». Εάν έχουμε έναν υπολογισμό που εισάγει στο πεδίο Α μια τιμή από άλλον πίνακα από το πεδίο Β, ανάλογα με την τιμή στο πεδίο συνδέσμου Β, τότε είναι λογικό να μπορούμε να χρησιμοποιούμε μόνο τις συνθήκες «Αλλαγή πεδίου Β» και «Αποθήκευση στον πίνακα». .

Ρύθμιση και αρχειοθέτηση αρχείων καταγραφής

Μεταβείτε στις "Ρυθμίσεις" - "Καταγραφή" - "Ρυθμίσεις καταγραφής". Στις ρυθμίσεις αρχείων καταγραφής, δεν θα πρέπει να ενεργοποιείτε άσκοπα την καταγραφή της προβολής πινάκων, προβολών και εγγραφών από τον χρήστη. Αυτό μπορεί να αυξήσει το φόρτο του διακομιστή και να προκαλέσει το αρχείο καταγραφής πολύ μεγάλο. Αξίζει επίσης να ενεργοποιήσετε την επιλογή "Μηνιαία αρχείο καταγραφής" εδώ, η οποία θα σας επιτρέψει να μειώνετε αυτόματα το μέγεθος του πίνακα με αρχεία καταγραφής κάθε μήνα

Μπορείτε επίσης να αρχειοθετήσετε αυτόματα αρχεία καταγραφής εδώ, εάν η αυτόματη αρχειοθέτηση δεν ήταν προηγουμένως ενεργοποιημένη. Αυτό μπορεί να γίνει στην καρτέλα "Αρχείο".

Ρύθμιση φίλτρων

Εάν ανοίξετε τις ρυθμίσεις οποιουδήποτε φίλτρου, θα δείτε την επιλογή "Εμφάνιση του αριθμού των εγγραφών σε αγκύλες". Συνιστάται να καταργήσετε την επιλογή αυτού του πλαισίου, γιατί... αυτή η επιλογή μπορεί να προκαλεί φόρτωση κάθε φορά που ανοίγει ο πίνακας. Και όσο περισσότερα τέτοια φίλτρα στον πίνακα, τόσο μεγαλύτερο είναι το φορτίο κατά το άνοιγμα.

Οδηγίες για προγραμματιστές

Εργασία με τον πίνακα performance_stat

Σπουδαίος:Η πραγματοποίηση αλλαγών σε πίνακες βάσης δεδομένων μπορεί να έχει ως αποτέλεσμα το πρόγραμμα να μην λειτουργεί. Δεν θα πρέπει να κάνετε αλλαγές σε πίνακες βάσεων δεδομένων εκτός εάν είναι απολύτως απαραίτητο.

Συνδεθείτε στον λογαριασμό σας και ανοίξτε τη διεύθυνση https://*διεύθυνση του λογαριασμού σας*/edit_sql.php (όπου αντί για *διεύθυνση του λογαριασμού σας* εισάγετε την κατάλληλη τιμή). Στο παράθυρο που ανοίγει, μεταβείτε στον πίνακα της βάσης δεδομένων που περιέχει το όνομα του λογαριασμού σας (για παράδειγμα, c_myaccount). Στη λίστα των πινάκων βάσης δεδομένων που ανοίγει, ανοίξτε τον πίνακα f_performance_stat

Αυτός ο πίνακας παρακολουθεί όλα τα σενάρια προγράμματος για την τελευταία ώρα. Αρχικά, θα πρέπει να ταξινομήσετε όλα τα σενάρια σε αυτόν τον πίνακα με βάση τον αριθμό των ερωτημάτων sql (από τα περισσότερα στο λιγότερο). Για να το κάνετε αυτό, κάντε διπλό κλικ στην κεφαλίδα "sql_count".

Μόλις ταξινομηθούν τα δεδομένα, μπορεί να ξεκινήσει η ανάλυση δεδομένων. Κατά τη διεξαγωγή ανάλυσης, θα πρέπει να δώσετε προσοχή σε δύο στήλες

1. script - υποδεικνύει το όνομα του σεναρίου που παράγει το φορτίο

2. get_data - παρέχει πιο λεπτομερείς πληροφορίες σχετικά με το σενάριο ή περιέχει έναν σύνδεσμο προς τον πίνακα/την εργασία στην οποία εμφανίζεται η φόρτωση.

Για ευκολία ανάλυσης, χρησιμοποιήστε τον παρακάτω πίνακα:

Τιμή στο πεδίο "script". Παράδειγμα τιμής στο πεδίο "get_data". Περιγραφή Ενέργειες για τη μείωση του φορτίου
cron.php ...&task_id=1 Μια γραμμή όπως αυτή σημαίνει ότι το φορτίο παρέχεται από μία από τις εργασίες Cron
Πρέπει να μεταβείτε στις "Ρυθμίσεις Cron" και να ανοίξετε την εργασία που προκαλεί τη φόρτωση (το αναγνωριστικό εργασίας υποδεικνύεται στο πεδίο "get_data"). Αξίζει είτε να βελτιστοποιήσετε τον κωδικό εργασίας είτε να μειώσετε τη συχνότητά του. Σχετικά με τις ρυθμίσεις Cron.
view_line2.php πίνακας=42&line=1&φίλτρο=48&σελίδα=1 Μια γραμμή αυτού του τύπου σημαίνει ότι το φορτίο δίνεται από έναν ή περισσότερους υπολογισμούς σε έναν συγκεκριμένο πίνακα κατά την προβολή μιας εγγραφής
πεδία.php πίνακας=42&φίλτρο=48 Μια γραμμή αυτού του τύπου σημαίνει ότι το φορτίο δίνεται από έναν ή περισσότερους υπολογισμούς σε έναν συγκεκριμένο πίνακα κατά την προβολή του πίνακα Πρέπει να μεταβείτε στις ρυθμίσεις υπολογισμού του πίνακα που καθορίζονται στο πεδίο "get_data" (στο παράδειγμα, αυτός είναι ο πίνακας με αναγνωριστικό 42). Αρχικά, αξίζει να εξετάσετε και να βελτιστοποιήσετε τις συνθήκες για την εκτέλεση υπολογισμών στον καθορισμένο πίνακα. Εάν αυτό δεν βοηθήσει, αξίζει να βελτιστοποιήσετε τον ίδιο τον κωδικό υπολογισμού.
αναφορά.php id=30 Μια γραμμή αυτού του τύπου σημαίνει ότι το φορτίο παρέχεται από μία από τις αναφορές προγράμματος
Είναι απαραίτητο να βελτιστοποιήσετε τον κωδικό της αναφοράς που καθορίζεται στο πεδίο "get_data" (στο παράδειγμα, αυτή είναι μια αναφορά με αναγνωριστικό 30).

Το άρθρο περιγράφει τη λειτουργικότητα που είναι διαθέσιμη στην PHP (σχετική για το 5.3.x) για τον χειρισμό σφαλμάτων όλων των τύπων, συμπεριλαμβανομένων των σφαλμάτων ερμηνείας κώδικα (E_ERROR, E_PARSE, E_WARNING, κ.λπ.). Αυτή η επεξεργασία θα σας βοηθήσει να εμφανίσετε τη σελίδα με ελεγχόμενο τρόπο εάν παρουσιαστούν τέτοια προβλήματα. Το άρθρο περιέχει πολλές περιγραφές και παραδείγματα εργασίας (αρχιτεκτονική) για άμεση χρήση στο προϊόν λογισμικού σας. Στο τέλος, ο ιστότοπος χάλασε λίγο, καλά, είναι απαραίτητο να ενημερώσετε τη μηχανή αναζήτησης σχετικά με αυτό με την επικεφαλίδα 4xx ή 5xx και να διασκεδάσετε τον χρήστη, αντί να επιστρέψετε μια λευκή οθόνη (ή χειρότερα, μια οθόνη με ιερές πληροφορίες, για χάκερ) με την απάντηση 200 Εντάξει.

Η ιδέα να γράψω αυτό το θέμα προέκυψε όταν έκανα γενναία 2 ερωτήσεις:

  • Ερώτηση για
  • Ερώτηση για
Με το κάρμα μου και προσθέτοντας στα αγαπημένα, συνειδητοποίησα ότι αποδείχθηκαν ενδιαφέροντα για την κοινότητα της PHP habra. Για το λόγο αυτό, αποφάσισα να επισημοποιήσω τις λύσεις σε αυτά τα ζητήματα με τη μορφή ενός άρθρου, ώστε να είναι ευκολότερο και πιο ολοκληρωμένο για τους ανθρώπους και τις μηχανές αναζήτησης να βρίσκουν τις πληροφορίες που χρειάζονται.

Αν σας ενδιαφέρει, οι λεπτομέρειες είναι υπό περικοπή...

Λόγοι χρήσης

Ο χρήστης/μηχανή αναζήτησης χρειάζεται μια σαφή απάντηση ότι υπάρχει πρόβλημα στον διακομιστή. Χωρίς τη χρήση ενός συγκεκριμένου φενγκ σούι, αυτό είναι αρκετά δύσκολο να επιτευχθεί και μερικές φορές αδύνατο. Εδώ έριξα φως σε όλα αυτά και αφήνω επίσης μια σημείωση για τον εαυτό μου, καθώς πριν από μια εβδομάδα δεν ήξερα τι να κάνω και, πιθανότατα, πολλοί αρχάριοι θα αποθαρρυνθούν επίσης.

Περιγραφές συναρτήσεων

Αυτή η λειτουργία είναι διαθέσιμη στην PHP για τη διαχείριση σφαλμάτων και τον έλεγχο της εξόδου. Εδώ είναι μια περιγραφή των καλών και των ελλείψεών τους. Δεν θα παράσχω τεκμηρίωση, απλώς θα αναφερθώ στις σελίδες του και θα περιγράψω τη γνώμη μου. Το μόνο που θα δοθεί είναι μόνο ένα μικρό μέρος· θα παράσχω συνδέσμους προς τις σχετικές ενότητες της τεκμηρίωσης στο τέλος του άρθρου. Συναντάμε λοιπόν:

- Έλεγχος μη κρίσιμων σφαλμάτων:σχόλια, προειδοποιήσεις, σφάλματα χρήστη. Γενικά, ό,τι δεν τερματίζει την ερμηνεία ασυνήθιστα.
set_error_handler - Ορίζει ένα πρόγραμμα χειρισμού σφαλμάτων που ορίζεται από το χρήστη.
Απαιτείται η εγγραφή όλων αυτών των σφαλμάτων στο αρχείο καταγραφής. Εάν δεν το ρυθμίσετε, τότε δεν θα γραφτεί στο αρχείο καταγραφής, αλλά πάντα θέλω να ξέρω σε ποιες καταστάσεις μάχης μπορούν να ενεργοποιηθούν σχόλια και προειδοποιήσεις. Δηλαδή επιτρέπει στον χρήστη να δοκιμάσει αυτόματα το προϊόν και δεν θα το προσέξει καν.
Εάν η συνάρτηση δεν έχει καθοριστεί, τότε η PHP προσπαθεί μόνο να εμφανίσει δεδομένα στην οθόνη και αν αυτό δεν της δοθεί, τότε δεν προκύπτουν καθόλου σημάδια ζωής από αυτούς τους τύπους σφαλμάτων.

- Έλεγχος, εξαιρέσεις:είναι ένα σφάλμα τύπου E_ERROR.
set_exception_handler - Ορίζει έναν προσαρμοσμένο χειριστή εξαιρέσεων
Λοιπόν, δεν ξέρω γιατί επινοήθηκε καθόλου, όταν υπάρχει αυτό που περιγράφεται παρακάτω και απλώς χειρίζεται ένα σφάλμα τύπου Εξαίρεσης. Σας λέω λοιπόν ότι απλά υπάρχει. Πιάνει το σφάλμα κρίσιμης εξαίρεσης και σας επιτρέπει να κάνετε κάτι για αυτό. Σε κάθε περίπτωση, το σενάριο τελειώνει. Η προεπιλεγμένη λειτουργία του είναι αρκετή για εμένα προσωπικά (γράφει στα αρχεία καταγραφής, προσπαθεί να εμφανίσει). Δεν θα το επαναπροσδιόριζα καθόλου, διαφορετικά θα έπρεπε να γράψω ο ίδιος για την εξαίρεση που συνέβη στα αρχεία καταγραφής.

- Λειτουργίες ελέγχου εξόδου:Εδώ θα περιγράψω 3 λειτουργίες που πρέπει να γνωρίζετε για διαφορετικούς λόγους. Για παράδειγμα, για ή για προβλήματα εξόδου κεφαλίδας. Στην περίπτωσή μας, πρέπει να εμφανίσουμε κεφαλίδες σφαλμάτων.

Συνθήκες
Υπάρχει ένα αρχείο με κώδικα που εκτελείται πρώτο ή πριν από τον κώδικα στον οποίο μπορεί να εμφανιστεί ένα σφάλμα, και αυτό το αρχείο και όλα τα αρχεία πριν από αυτό έχουν 100% εντοπισμό σφαλμάτων με την αδυναμία εμφάνισης σφάλματος. Αυτή είναι η συνθήκη που θα διευκόλυνε - χωρίς σφάλματα μέχρι να περάσουν όλες οι εγγραφές των παραπάνω λειτουργιών. Αυτό το αρχείο περιγράφει αυτές τις τεχνικές ελέγχου σφαλμάτων σε ένα σύνθετο. Το buffer παρακολουθείται, εάν υπάρχει σφάλμα, επαναφέρετε το buffer και εμφανίστε ένα σφάλμα.
Κωδικός με σχόλια
Θα προσθέσω μόνος μου ότι δεν έχω δοκιμάσει τον κωδικό, καθώς αυτό είναι ένα απλοποιημένο διάγραμμα του τι έχω στον κώδικα, τα σχόλια είναι ευπρόσδεκτα
mob_info