N'aime pas l'aide Signaler PHP. Comment trouver une erreur dans votre code? Configurez la taille maximale du fichier pour vos enregistrements d'erreur

20.6k.

PHP est un langage de programmation de serveur intégré. La majeure partie de sa syntaxe est empruntée à C, Java et Perl. Et a également ajouté une paire de fonctionnalités uniques uniquement pour les fonctions PHP. L'objectif principal de cette langue est la création de pages HTML PHP générées dynamiquement.

Php en html

Lors de la création de pages Web complexes, vous rencontrerez la nécessité de combiner PHP et HTML pour mettre en œuvre des tâches spécifiques. À première vue, cela peut sembler difficile, car PHP et HTML sont deux disciplines indépendantes, mais ce n'est pas le cas. PHP est conçu pour interagir avec HTML et son code peut être inclus dans le marquage de la page.

Dans les pages HTML, le code PHP est inclus à l'aide d'étiquettes spéciales. Lorsque l'utilisateur ouvre la page, le serveur traite le code PHP, puis envoie le résultat du traitement (non Code PHP) Dans le navigateur.

HTML et PHP sont assez simples à combiner. Toute partie du script php en dehors des balises Il est ignoré par le compilateur PHP et est transmis directement au navigateur. Si vous regardez l'exemple ci-dessous, vous pouvez voir que le script PHP complet peut ressembler à ceci:

Bonjour Aujourd'hui.

Le code ci-dessus est le HTML habituel avec un petit fragment PHP qui affiche la date actuelle à l'aide de la fonction Date intégrée. Dans ce cas, tout HTML sera ignoré par le compilateur PHP et transmis au navigateur inchangé.

Intégrer PHP dans HTML est vraiment très facile. N'oubliez pas que le script est une page HTML avec l'inclusion d'un code PHP spécifique. Vous pouvez créer un script qui ne contiendra que HTML (sans balises), et cela fonctionnera normalement.

Méthodes plus avancées:

  • Élément du menu.


et le résultat:

Php en html avec short_open_tag

Si vous avez besoin de couper le code autant que possible auparavant dans PHP Insert HTML, vous pouvez utiliser Short_Tags. En conséquence, il ne sera pas nécessaire d'entrershort_tags" de " Désactivé" sur le " AU.". Bien que sur la plupart des serveurs, ce paramètre est déjà activé, il est toujours préférable de le vérifier manuellement. Un problème pouvant survenir lorsque vous utilisez des étiquettes courtes est un conflit lors de l'utilisation de XML. En expression syntaxique XML

Php en html avec court__tag

Bonjour, aujourd'hui est.

N'oubliez pas que si vous devez créer un site compatible avec le nombre maximal de plates-formes, lorsque l'insertion de PHP dans HTML ne doit pas s'appuyer sur Short_Tags.

HTML dans PHP en utilisant ECHO

Une autre façon d'intégrer HTML au fichier PHP est la commande ECHO :.

Cela affectera le rétro-éclairage du marquage dans la plupart des éditeurs. Par conséquent, il est nécessaire d'allouer toutes les citations doubles à l'intérieur du code HTML à l'aide de la tresse inverse.

PHP dans HTML - Extensions de fichier

Pour un serveur Web personnalisé standard:

Addhandler cgi-script .html .htm

Pour serveur Web avec FastCGI en cours d'exécution:

Addhandler fcgid-script .html .htm

Html dans php.

Vous pouvez également utiliser du code HTML dans les scripts PHP. Tout ce que vous avez à faire est lorsque vous ouvrez une page avec PHP modifier l'ordre d'ouverture des balises HTML et PHP.

Dans cette leçon, nous apprendrons de telles choses comme cacher des erreurs PHP. En cours de route, nous discerrons également comment il n'est pas facile de supprimer la sortie de ces erreurs, mais également à la manière de les enregistrer dans le fichier journal, de la manière de protéger ce fichier journal, de la configuration des messages d'erreur PHP (à quel point les erreurs sérieuses montrent , Afficher des avertissements), apprenez à définir les lignes d'erreur maximales de taille et éteignez l'enregistrement des erreurs de répétition.

Dois-je cacher des erreurs php

Les erreurs PHP donnent aux informations les plus diverses permettant à l'attaquant de collecter des données sur votre site et votre serveur. Mais si cette question était une réponse sans ambiguïté "oui", tout serait résolu en ajoutant à chaque fichier avec des programmes PHP d'une seule ligne

Error_rporting (0);

En fait, toutes les erreurs, y compris les avertissements (erreurs non critiques), doivent être affichées à l'étape de test. La production d'erreurs et d'avertissements contribuera également à comprendre les problèmes existants (ou possibles) dans l'environnement de travail. Vous ne devez pas supprimer la production d'erreurs et d'avertissements dans les programmes destinés à une distribution gratuite, car s'il y a des problèmes, tous les rapports d'utilisateurs sur des problèmes seront les mêmes: "Il y a un écran blanc", ce qui fait grandement des tentatives de comprendre.

En général, sur des serveurs conçus pour développer (par exemple, sur un serveur de domicile), vous n'avez pas besoin de supprimer des erreurs et des avertissements PHP en utilisant des méthodes. error_rporting (0); et @ - Vous devez étudier leurs causes et corriger le code source.

Sur les serveurs de travail, il est extrêmement recommandé de ne pas afficher toutes les erreurs survenues dans le code PHP, mais il est recommandé de ne pas simplement supprimer leur affichage, mais également pour effectuer leur journal, écrire pour l'administrateur système et pour un programmateur à PHP. - À partir de ces journaux, ils recevront des informations importantes sur les problèmes possibles sur le site / le serveur.

Comment activer la journalisation des erreurs php via.htaccess

Dans cette partie de la leçon, je montrerai aux utilisateurs Apache comment supprimer la sortie d'erreur PHP et les masquer à partir des visiteurs et l'enregistrement d'erreur PHP sera activé pour une analyse ultérieure, tout ce paramètre sera mis en œuvre via File.htaccess.

En général, cette méthode présente un autre avantage merveilleux - au lieu d'essayer de transférer toutes les erreurs et avertissements de PHP, nous écrirons chacun d'entre eux à notre journal personnel, grâce à cela, aucune erreur ne s'est produite, même si elle n'a pas de vous, et quelqu'un a un visiteur sur votre site dans des conditions que cela ne voudrait peut-être même pas simuler. Grâce à un moyen simple de mettre en œuvre cette stratégie efficace.

Masquer les erreurs PHP des visiteurs

Il y a différentes façons de supprimer les erreurs php à travers.htaccess. Cela peut être fait sur les directives suivantes .htaccess dans le fichier de votre domaine httpd.conf ou dans la racine (ou tout autre répertoire cible) fichier.htaccess avec le contenu suivant:

# Appuyez sur 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

Cela conduira au fait que les erreurs de PHP ne seront plus publiques sur votre site. Cela élimine les risques de sécurité potentiels et ne donne pas ces erreurs php laides et incompréhensibles pour briser le choc de votre site et désorienter vos visiteurs. L'édition de code pour cela n'est pas requis.

Activation du magazine PHP PHP

Maintenant que nous cachons des erreurs publiques PHP, activons leur journalisation (enregistrement) afin que nous puissions les suivre. Ceci est fait en ajoutant les directives suivantes .htaccess au fichier de votre domaine httpd.conf ou de votre fichier.htaccess, situé dans le répertoire racine (ou de cible).

Php_flag log_ror_log / php_value error_log / home / chemin / Public_html / domaine / php_html / domain / php_html / domaine / php_html / chemin

Pour le faire plus tôt, vous devez modifier le chemin dans la dernière ligne en fonction de l'emplacement réel de votre fichier php_errors.log. Bien sûr, avec cela, vous devez créer ce fichier et lui donner une résolution de 755 ou, si nécessaire, 777. Enfin, vous devez sécuriser ce fichier journal en ajoutant ces lignes finales du code à votre fichier.htaccess:

# Empêcher l'accès à l'erreur de journal PHP

Maintenant que tout est en place, vérifiez que tout fonctionne comme il devrait appeler plusieurs erreurs PHP. Vous pouvez également vouloir vérifier la protection de votre fichier journal, en essayant d'avoir accès via le navigateur.

Gestion des erreurs php avancées à l'aide de.HTACCESS

Soyons maintenant plus profonds dans ce sujet, ajouter des fonctionnalités supplémentaires et explorer diverses implémentations. Tout d'abord, nous étudions les travaux avec les erreurs de PHP pour l'environnement de travail (par exemple, pour les sites Web et les applications en ligne, sont actifs et publics), alors nous examinerons le travail avec des erreurs pour l'environnement du développeur (par exemple, pour projets en cours de développement, test, privé, etc.).

Control PHP Message d'erreur

Utilisation.htaccess Il est possible de configurer le message d'erreur adapté à vos besoins pratiques. Fort commun pour contrôler les erreurs PHP Suivant:

# Vue générale de la directive pour configurer le niveau d'erreur php_value error_rporting chiffre chiffre

Il existe plusieurs valeurs communes pouvant être substituées au lieu de "chiffrer", y compris:

  • Le message d'erreur le plus complet (Conforme à e_all) - Pour ce faire, utilisez la valeur "32767".
  • Message d'erreur complet - Pour compléter les erreurs PHP, utilisez l'erreur "8191", qui permettra l'enregistrement du total, à l'exception de la notification de temps d'exécution sur l'utilisation de conceptions obsolètes (avertissements de code qui ne fonctionneront pas dans les versions PHP suivantes).
  • ZEND Message d'erreur - enregistrer à la fois des avertissements mortels et non mortels du temps de compilation généré par le moteur de script Zend, utilisez "192".
  • Message d'erreur de base - Notez les notifications de temps d'exécution. Indiquez que lors de l'exécution du script, quelque chose est arrivé qu'il peut indiquer une erreur, bien que cela puisse se produire avec l'exécution habituelle du programme. Pour ce faire, utilisez le numéro "8".
  • Message d'erreur minimum - enregistrer uniquement les erreurs fatales du temps d'exécution. Ce sont des outils non liés pour le script d'erreurs, tels que l'erreur d'allocation de la mémoire, etc. L'exécution du script dans ce cas est terminée. Pour ce faire, utilisez le numéro "1".

Bien sûr, vous pouvez utiliser d'autres valeurs ("NUMÉROS") pour un ajustement précis de quelles erreurs que vous souhaitez réparer. Certaines explications sur cette question au fond même.

Configurez la taille maximale du fichier pour vos enregistrements d'erreur

Utilisation.htaccess Vous pouvez définir la taille maximale pour vos erreurs PHP. Il est dû au contrôle de la taille de chaque erreur enregistrée et non à l'ensemble du fichier dans son ensemble. La syntaxe est la suivante:

# Directive générale pour configurer la taille d'erreur maximale log_errors_max_len. Corolor_

Ici, "Objectif_none" représente la taille maximale de chaque ligne d'erreur enregistrée en octets. Par défaut, la valeur est "1024" (c'est-à-dire 1 kiloByte). Pour supprimer cette limite, vous pouvez définir la valeur "0". N'oubliez pas que cette valeur est également utilisée pour les erreurs affichées lorsqu'elles sont activées (par exemple, pendant le développement).

Désactiver les erreurs d'enregistrement d'enregistrement

Si vous avez déjà réussi à travailler avec le journal d'erreur, vous ne faites pas attention à ce qu'il existe de nombreuses entrées similaires qui ne diffèrent qu'au moment des événements. Vous pouvez vous débarrasser de cette redondance, ajouter simplement ces lignes au fichier HTCCESS:

# Éteignez l'enregistrement des erreurs répétées PHP_FLAG IGNORE_REPEATED_ERRORS ON PHP_FLAG IGNORE_REPEATED_SOURCE ON

Avec de tels paramètres, des erreurs répétitives ne seront pas enregistrées dans le pistolet, même si elles se sont produites dans diverses sources ou adresses. Si vous souhaitez désactiver la répétition d'erreurs d'une seule source ou fichier, commencez simplement ou supprimer la dernière chaîne. Et inversement à vous assurer que votre fichier journal d'événements inclut toutes les erreurs répétitives, modifiez les deux valeurs avec aU. sur le désactivé.

Nous recueillons tous ensemble - l'environnement de travail

Diminuant les fonctionnalités de la configuration de l'enregistrement d'erreurs PHP, collectons tous nos enregistrements dans un fichier.htaccess. Ces paramètres sont optimisés pour l'environnement de travail.

# Traitement des erreurs PHP pour les display_startup_errors php_flag du serveur de production hors display_errors php_flag off php_flag html_errors off log_errors php_flag sur ignore_repeated_errors php_flag off php_flag ignore_repeated_source off report_memleaks php_flag sur track_errors php_flag sur php_value docref_root 0 php_value docref_ext 0 php_value error_log / home / chemin / public_html / domaine / PHP_errors . journal php_value error_reporting -1 php_value log_errors_max_len 0 La commande permet de refuser de refuser de tout satisfaire

Si vous considérez un bon code de style avec des explications, le même code, mais avec des commentaires:

# Traitement des erreurs PHP pour votre serveur # Désactiver l'erreur de démarrage php_flag display_startup_errors Désactiver # Désactiver toutes les autres erreurs php_flag display_errors OFF # Désactiver la désactivation HTML Markup php_flag HTML_ERRORS OFF # Pour commencer l'enregistrement PHP_FLAG LOG_ERRORS INTÉGLER PHP_FLAG IGNORE_REPEATED_ERRORS OFF # Désactiver l'ignorance ERREUR DES SOURCES UNIQUES PHP_FLAG IGNORE_REPEATED_SOURCE OFF # Tourner la mémoire Enregistrer des fuites PHP PHP_FLAG Report_Memleaks sur # Enregistrer les erreurs les plus récentes via php_errormsg php_flag pack_errors sur # Désactiver les liens de référence pour erreurs php_value docref_root 0 # Désactiver les liens de référence pour erreurs php_value docref_ext 0 # Spécifier Le chemin d'accès à php_value error_log /home/path/public_htm/domain/public_html/domain/public_html/domain/public_html/domain/public_html/domain/php_errors.log # Spécifiez l'enregistrement de tous php php_value error_reporting -1 # Désactiver la longueur maximale de la chaîne d'erreur php_valu E log_errors_max_len 0 # Protégez le fichier journal d'erreur de l'accès public La commande permet de refuser de refuser de tout satisfaire

La stratégie donnée est idéale pour un serveur public dans l'environnement de travail. Toutes les erreurs sont cachées à partir d'yeux indiscrets, alors qu'ils vont soigneusement pour les administrateurs et les programmeurs. Bien sûr, vous pouvez personnaliser les directives pour vous-même afin qu'elles soient parfaites pour vos tâches. Et maintenant examinons la stratégie de travail avec des erreurs pour l'environnement environnemental.

Nous recueillons tout ensemble - l'environnement environnemental

Travailler ou déboguer un programme, il est plus pratique de suivre les erreurs PHP qui se produisent en temps réel, juste dans le navigateur. Exemple.htaccess Avec les paramètres appropriés pour l'environnement de développement est indiqué ci-dessous:

# Travailler avec des erreurs PHP pour les display_startup_errors des développeurs serveur sur display_errors php_flag sur php_flag html_errors sur log_errors php_flag sur ignore_repeated_errors php_flag hors php_flag ignore_repeated_source hors report_memleaks php_flag sur track_errors php_flag sur php_value docref_root 0 php_value docref_ext 0 php_value error_log / home / chemin / public_html / domaine / PHP_errors .log php_value error_reporting -1 php_value log_errors_max_len 0 La commande permet de refuser de refuser de tout satisfaire

Ne vous expliquons pas chaque ligne - vous pouvez voir la clarification appropriée d'un peu plus haut.

Conseils

Pour connaître le chemin absolu vers le fichier journal sur le serveur à l'aide de méthodes PHP (pour la directive Php_Value Error_Log)

Echo Dirname (__ Fichier__);

Exemple.htaccess pour.

display_startup_errors php_flag sur display_errors php_flag sur html_errors php_flag sur log_errors php_flag sur ignore_repeated_errors php_flag off off php_flag ignore_repeated_source report_memleaks php_flag sur track_errors php_flag sur php_value docref_root php_value docref_ext 0 0 php_value error_log C: ServerdatahtdocsPHP_errors.log php_value error_reporting -1 0 php_value log_errors_max_len La commande permet de refuser de refuser de tout satisfaire

Ne marche pas

Cette méthode n'est pas applicable sur l'hébergement, où PHP fonctionne comme CGI (Les solutions possibles seront affichées dans l'article suivant).

-1 et ~ 0 pour afficher toutes les erreurs php

Dans la directive php_value error_rporting Vous pouvez spécifier toutes les erreurs à afficher -1 ou alors ~0 . Ceux. Les rangées ressemblent à ceci:

Php_value error_reporting -1 php_value error_rporting ~ 0

Et plus correct est la deuxième méthode, c'est-à-dire en utilisant ~0 .

Constantes prédéfinies et opérations cassées Error_Reporting

  • Constantes prédéfinies
  • Opérateurs bitwises

Par exemple, si nous voulons enregistrer uniquement les erreurs e_Error suivantes (valeur 1), e_core_error (valeur 16), puis pour obtenir une valeur numérique appropriée, il serait nécessaire de traduire ces valeurs en binaire numéros et produisent les opérations de lot appropriées, puis obtenus un nombre binaire traduisent à dix fois. Cependant, cette opération peut être simplifiée - suffisamment plié les valeurs des nombres décodeurs. Ceux. Dans notre cas, il est 1 + 2 + 16 \u003d 19

Php_value error_rporting 19.

afficher des erreurs E_ERROR, E_WARNING et E_CORE_ERROR.

Un exemple de chemin absolu sur le journal du fichier sur l'hébergement de l'Hostland (pour php_value error_log Directive)

/Home/host900456/sight/blogs/htdocs/www/php_errors.log.

Au lieu host900456. Vous devez spécifier votre compte.

Au lieu site Internet Vous devez spécifier votre domaine.

Au fait, un bon hébergement qui travaille sur ce site même. Conseillé!

Le coefficient de charge admissible sur le serveur est l'un des paramètres des comptes SaaS. Pour chaque plan tarifaire installé leurs paramètres de charge. Avec le compte courant du compte, vous pouvez toujours lire le compte personnel du système CRM.

Parfois, il peut y avoir une telle situation que le compte utilisé produira une charge supérieure à celle autorisée sur votre plan tarifaire. Vous en serez notifié à ce sujet par la lettre correspondante.

Les paramètres principaux affectant la charge:

  • Nombre d'utilisateurs dans le système de travail en même temps;
  • Nombre d'enregistrements dans les tableaux du programme;
  • Le nombre de règles et de groupes d'accès;
  • Le nombre de rappels, de formatage des couleurs, de filtres, etc.
  • Le nombre de calculs et leur complexité;
  • Le nombre de tâches effectuées en arrière-plan (via le système de cron);
  • Nombre de mailing lancé (email et SMS);
  • Nombre de rapports;
  • Le volume du journal du programme.

Par conséquent, si certains groupes d'accès, formatage des couleurs, filtres et autres éléments de configuration ne sont pas utilisés, il est souhaitable de les supprimer. Vous pouvez également supprimer des enregistrements inutiles des tables. En plus de supprimer des éléments de configuration, d'autres mesures peuvent être prises pour réduire la charge sur le serveur. À propos des détails Le discours ira ci-dessous.

Toutes les mesures visant à réduire la charge peuvent être divisées en deux parties: pour les administrateurs et les développeurs. Ces mesures peuvent également réduire la charge sur le serveur lors de l'utilisation de la version Web du programme.

Instructions pour les administrateurs

Optimisation de démarrage

La première action que vous avez à faire est de vous assurer que vous utilisez la dernière version du programme. Vous pouvez vérifier cela en allant à "Paramètres" - "Advanced" - "Refresh Revision". Si vous utilisez la dernière version et la révision du programme, vous verrez le message approprié.

Si vous utilisez une ancienne version ou une révision, le programme vous suggérera de mettre à niveau.

Ensuite, vous devez exécuter une vérification du système étendu. Pour ce faire, allez à "Paramètres" - "Avancé" - "Vérification du système" et cliquez sur le bouton "Vérification du système étendu". En cas d'erreur dans le programme, ils seront automatiquement corrigés.

Paramètres de programme général

Allez à "Paramètres" - "Advanced" - "Paramètres généraux". Cela vaut la peine de faire attention à deux points.

Recherche intuitive - Vous pouvez désactiver cette option si vous n'avez pas besoin de recherche de translittération de la valeur.

Fenêtre Mode de défilement - Vous pouvez en savoir plus sur les modes de la fenêtre. Vous pouvez lire dans notre documentation. Il est conseillé de spécifier ce paramètre la valeur "simple".

Paramètres cron.

Allez à "Paramètres" - "Avancé" - "Paramètres Cron". Dans les paramètres Cron, vous pouvez contrôler les tâches fonctionnant automatiquement en arrière-plan. Par exemple, la synchronisation, l'envoi de lettres et des SMS. Réduisez la charge en raison de ce paramètre de deux manières.

1. Interdire l'exécution des tâches que vous n'utilisez pas dans votre programme. Vous pouvez le faire en ouvrant la tâche souhaitée et en mettant une tique "interdire l'exécution".

Par exemple, si vous n'utilisez pas la fonction de synchronisation, ouvrez la tâche appropriée et cochez la case "Désactiver l'exécution" dans ses paramètres. Si vous n'utilisez pas la fonction SMS Envoyer - vous pouvez interdire l'exécution des tâches de formation "SMS" "Envoi de SMS", "Vérifier le statut de livraison SMS".

2. Modifiez la fréquence des tâches. Vous pouvez le faire en entrant les paramètres du travail et en modifiant la valeur dans le champ "Période". Par exemple, dans le message "Envoi de lettres", vous pouvez spécifier au lieu d'exécution de chaque minute, l'exécution de la tâche une fois en 5 minutes.

Définition des conditions de calcul

Dans le programme CRM pour remplir automatiquement certains champs à l'aide de calculs. Mais parfois, les conditions de leur mise en œuvre sont non optimales. Par exemple, la charge provoque la condition "Affichage du champ" dans le réglage de calcul. Il devrait être évité.

Par exemple, si nous avons un calcul pour lequel la quantité de champs B et B est introduite dans le champ A, il est souhaitable d'utiliser les conditions du champ B "et" Changer le champ B ". Si nous avons un calcul qui entre dans la valeur d'une autre table du champ B, en fonction de la valeur dans le champ de connexion B C, il est logique que vous ne pouvez utiliser que le "changement du champ" et "enregistrer la table".

Réglage et archivage des journaux

Allez à "Paramètres" - "Journaux" - "Réglage du journal". Dans les paramètres du journal, il n'est pas nécessaire d'activer la journalisation de l'utilisateur par l'utilisateur des tables, des vues et des enregistrements. Cela peut augmenter la charge sur le serveur et apporter au fait que le fichier avec les journaux sera trop grand. Il est également ici d'inclure l'option "faire un archivage mensuel d'un journal", ce qui vous permettra de réduire automatiquement la taille de la table avec des journaux.

Ici aussi, vous pouvez automatiquement archiver des journaux, si l'archivage automatique n'a pas été activé. Vous pouvez le faire dans l'onglet "Archives".

Configuration des filtres

Si vous ouvrez les paramètres d'un filtre, vous pouvez voir l'option «Affichage entre crochets». Il est conseillé de supprimer cette tique, car Cette option peut provoquer une charge avec chaque ouverture de la table. Et plus ces filtres dans la table - plus la charge est grande lors de l'ouverture.

Instructions pour les développeurs

Travailler avec une table de perfomance_stat

Important: L'apport des modifications apportées aux tables de base de données peut conduire à l'inopérabilité du programme. Ne modifiez pas la table de base de données sans besoin extrême.

Entrez votre compte et ouvrez l'adresse HTTPS: // * Adressez votre compte * / EDIT_SQL.PHP (Où au lieu de * adresse de votre compte * Spécifiez la valeur correspondante). Dans la fenêtre qui s'ouvre, accédez à la table de base de données contenant le nom de votre compte (par exemple, C_MYAccount). Dans la liste des tables de base de données qui s'ouvrent, ouvrez la table F_performance_Stat

Cette table continue de comptabiliser tous les scripts de programme pour la dernière heure. Pour commencer, vous devez trier tous les scripts de cette table par le nombre de requêtes SQL (de plus au plus petit). Pour cela, double-cliquez sur l'en-tête "SQL_Count".

Une fois les données triées, vous pouvez commencer à analyser les données. Lorsque vous effectuez une analyse, vous devez faire attention à deux colonnes.

1. Script - indique le nom du script qui émet la charge

2. get_data - fournit des informations plus détaillées sur le script ou contient une référence à une table / tâche dans laquelle la charge se produit.

Pour plus de commodité de l'analyse, utilisez le tableau ci-dessous:

Valeur dans le champ "script" Exemple de valeur dans le champ "get_data" La description Actions pour réduire la charge
cron.php. ... & Task_id \u003d 1 La ligne de ce type signifie que la charge donne l'une des tâches en cron
Vous devez aller à "Paramètres cron" et ouvrir la tâche qui provoque la charge (l'ID de tâche est spécifié dans le champ "get_data"). Il est nécessaire d'optimiser le code de la tâche ou de réduire sa fréquence. Sur les paramètres de cron.
view_line2.php. table \u003d 42 & Line \u003d 1 & Filtre \u003d 48 & Page \u003d 1 Une chaîne de ce type signifie que la charge donne un ou plusieurs calculs dans une table spécifique lors de la visualisation de l'enregistrement.
champs.php. table \u003d 42 & Filtre \u003d 48 La ligne de ce type signifie que la charge donne un ou plusieurs calculs dans une table spécifique lors de la visualisation de la table. Vous devez aller aux paramètres du calcul du tableau spécifié dans le champ "get_data" (dans l'exemple, ceci est une table avec ID 42). Pour commencer, il vaut la peine de visualiser et d'optimiser les conditions d'exécution des calculs dans la table spécifiée. Si cela n'aidait pas, il vaut la peine d'optimiser le code de calcul lui-même.
reporter.php. id \u003d 30. La chaîne de ce type signifie que la charge donne l'un des rapports de programme.
Il est nécessaire d'optimiser le code de rapport spécifié dans le champ "get_data" (dans l'exemple, il s'agit d'un rapport avec ID 30).
29 décembre 2012 à 22:01
  • Server Microsoft SQL

Nous continuons à envisager des conseils utiles pour les débutants, lors de la création de rapports dans Microsoft Reporting Services.
Le début peut être trouvé ici:
Intéressé, s'il vous plaît sous le chat ...

0) Comment placer plusieurs contrôles dans la cellule de table?
Très souvent, il est nécessaire de placer plusieurs contrôles dans une table cellulaire. Si vous faites glisser le contrôle sur la cellule, cela le remplit complètement. Le contrôle, appelé rectangle, aide à quitter cette situation.

Le rectangle est un analogue de la commande de panneau utilisée dans Winforms, il s'agit d'un certain terrain de jeu pour passer des commandes. Lorsqu'il est placé dans la cellule, le rectangle remplit la cellule entière de la table créant une "plate-forme" pour accueillir d'autres contrôles.

1) Spécifiez la langue de rapport par défaut
Lors de la création de rapports, essayez de déclarer la langue du rapport (Propriétés du rapport - Langue).

Il est très utile que vous travaillez avec un client étranger dont les paramètres régionaux diffèrent de la vôtre. Si vous ne savez pas quels paramètres utilisent votre client, c'est-à-dire la possibilité de spécifier l'exemple du contenu suivant:
\u003d Utilisateur! Langue
Par cela, vous éviterez des irrégularités pour formater des valeurs numériques, une date, une heure, une devise, etc. qui attendent un client.
2) Concaténation des chaînes
Parfois, il est nécessaire de "insérer" dans le texte du rapport statique, situé par exemple dans Texbox, la valeur de champ de la base de données. En d'autres termes, il est nécessaire de plier les lignes du texte en une chaîne. Pour ce faire, SSRS fournit l'opérande "&".
Supposons dans Texbox nous avons un texte statique "Bonjour, UV. Ivan Ivanovich ... ". Nous avons besoin au lieu d'Ivan Ivanovich pour substituer le nom de la base de données du champ FIO. Pour ce faire, cliquez avec le bouton droit sur Texbox, appelez le menu contextuel, sélectionnez la propriété Expression dans Texbox et modifiez le texte comme suit:
\u003d "Bonjour, UV. "& Champs! Fio.value &" ... "
uPD: Comme suggéré dans le commentaire, la manière la plus correcte de concaténer les lignes est d'utiliser un espace réservé.
Il est facile de l'utiliser: dans Texbox, vous devez définir le curseur sur l'endroit où il est censé insérer la valeur dans le champ Database. Cliquez avec le bouton droit sur le menu contextuel et sélectionnez "Créer un espace réservé ..."

Définissez la valeur d'étiquette (cette valeur sera vue dans le texte, si vous ne spécifiez pas la valeur du champ Lable, le nom du champ de la base de données) sera utilisé) et une valeur (dans notre cas, ce champ de la base de données)

L'espace réservé utilise des avantages supplémentaires:
1) vu le texte dans la commande (dans la méthode que j'ai décrite, l'utilisateur ne voit que le texte <> Qu'est-ce qui introduit une personne qui voit le code du rapport pour la première fois en confusion et dépense son temps à la recherche de l'expression souhaitée.)
2) L'espace réservé vous permet de formater le formatage du champ (définissez le format de données, modifiez la police, la couleur, l'alignement, etc. sans changer la mise en forme du texte principal.

La différence "sur le visage":

3) Méthodes de formatage des données numériques
SSRS fournit plusieurs fonctionnalités pour formater les données. La méthode de formatage la plus simple consiste à spécifier le format (propriété de format) dans les propriétés de contrôle.

Cette méthode présente 2 inconvénients:
1) Le contrôle contient en plus des données censées formater également un texte supplémentaire.
2) Lors de l'exportation d'un rapport dans HML
Il est possible de résoudre ce problème en appelant des méthodes spéciales. Considérons un exemple:
Textbox contient le texte suivant: "Cher client, la balance des fonds de votre compte est la suivante:" & champs! Userbalance.value & "frotter". .
Si vous ne formez pas, alors à condition que les champs VALEUR! UTILISEBALANCE.VALUE EST 1005.35 peut être affiché comme 1005.350000000000. Pour éviter un tel casus, vous devez utiliser la méthode Format.ou alors Se former.
Exemple d'utilisation: "Cher client, la balance des fonds de votre compte est" & Format (champs! Userbalance.value, "#, ## 0,00") & "frotter".
"Cher client, la balance des fonds de votre compte est" & Formanber (champs! Userbalance.value, 2) & "frotter".
Lorsque vous utilisez le format, vous devez utiliser le masque de formatage, lorsque vous utilisez Formanber, il suffit de spécifier le nombre de points-virgules.
Remarque: la méthode de format est également applicable pour formater la date, l'heure, l'argent, etc.

4) Exporter le rapport sur les champs de réglage du format de la CML
Les SSRS vous permettent d'exporter un rapport sur différents formats, l'un d'entre eux est HMD. Chaque contrôle de rapport comporte 3 propriétés responsables du comportement lors de l'exportation vers HML.

Considérez-les plus près:
DataElementName.- Responsable du nom de l'élément dans le HML, la valeur par défaut n'est pas exécutée. Si vous n'exécutez pas cet élément, le nom du HML correspondra au nom du contrôle.
DataElementouttput.- La propriété est responsable de cela qu'il y aura un élément exporté vers HML ou non. Les valeurs pouvant être définies:
AUTO.(Valeur par défaut) - L'élément exportera dans ce cas si cela importe si la valeur NULL n'est pas exportée.
Production.- L'élément est toujours exporté.
NOUUTPUT- L'élément de HML n'est pas exporté
DataElementtyle- Responsable de l'élément d'élément dans HML (ce sera un élément ou un attribut)
Valeurs qui peuvent être utilisées:
AUTO.(Valeur par défaut) - En fonction du contrôle, sera exporté comme élément (attribut). En fait, seul Texbox est exporté par défaut en tant qu'attribut, les éléments restants de la forme de nœuds.
Attribut.- la valeur sera présentée en tant qu'attribut
Élément.- la valeur sera présentée comme élément (noeud)
Une puce importante: la propriété cachée n'exporte pas la propriété cachée. Par conséquent, s'il est censé exporter un élément montré ou non sur la base de la condition, cette condition doit être transférée au contrôle d'expression. Exemple: la zone de texte contient du texte indiqué uniquement dans le cas où le champ de condition \u003d 1. Alors l'expression ressemblera à ceci:
\u003d Iif (champs! Condition.Value \u003d 1, "Texte", "")

Aujourd'hui, tout devrait être poursuivi.


1. Assurez-vous de voir des messages d'erreur s'ils se produisent.
Pour ce faire, ajoutez 2 lignes au début du script
iNI_SET ("DISPLAY_ERRORS", 1);
error_rporting (e_all);

Bien que dans certains cas, cela ne contribuera à aucun égal. Ensuite, regardez les erreurs dans les journaux du serveur Web.
Vous pouvez également ajouter à File.htaccess Line
php_flag display_errors 1.
Assurez-vous de supprimer tous les chiens (@) du code!
Si l'Apache donne une erreur 500 - cela signifie que vous souhaitez regarder le texte de l'erreur dans le journal des erreurs de serveur Web.

2. Si des problèmes avec les fonctions MySQL se produisent (par exemple, "argument fourni n'est pas une ressource de résultat MySQL valide") - cela signifie que MySQL_Query () a été exécuté avec une erreur. Pour toujours être au courant de telles erreurs, la fonction mysql_query doit être appelée comme ceci:

$ Sql \u200b\u200b\u003d "Sélectionnez * à partir du tableau";
$ Res \u003d mysql_query ($ sql) ou trigger_error (mysql_error (). "In". $ SQL);

Si MySQLI est utilisé, puis écrivez 1 ligne devant le connecteur:
mysqli_report_error | mysqli_report_strict);

3. Lorsque vous travaillez avec imagesPour voir un message d'erreur, il est nécessaire de deviner pour éteindre la sortie de l'en-tête, parlant le navigateur, qui est à côté de l'image.
Et, bien sûr, contactez le script directement et pas à travers la balise !

4. Lorsque des problèmes dans l'aplobe, consultez tout d'abord le tableau $ _files ( print_r ($ _files);). Descriptions d'erreurs à partir de $ _files ["nom de fichier"] ["erreur"] est dans le manuel.

6. Engagez une ligne avec l'en-tête («Emplacement:») Si vous recherchez une entrée dans le processeur Post Demander

7. Lors du débogage des demandes AJAX, voir la réponse du serveur dans Firebug-E et ses analogues (bouton F12 dans n'importe quel navigateur), l'onglet Réseau - Aperçu.

8. Et la chose la plus importante: le script en cours d'exécution, ne voyez pas ce que le navigateur montre, mais le code HTML source!.

Après avoir reçu un message d'erreur, vous pouvez la lire et le réparer.
Si vous n'avez pas fait face - écrivez au forum. Dans le même temps, copiez un message d'erreur et copiez une petite - 3-5 lignes - un morceau de code indiquant que l'erreur indique. Je répète - copier! Pas de jeter!

Si vous n'avez toujours pas trouvé d'erreur - lu sur:

N'oubliez pas - vous travaillez sur PCP uniquement avec des lignes! Page HTML que vous créez un script est pour PCP juste un ensemble de lignes! Il n'a aucune différence que dans cet ensemble - les étiquettes IMG, Script ou Cadre. PCP pour vous ne créera pas de lignes traductions, elle ne fera pas de javascript. Si vous ne connaissez pas le JavaScript, n'essayez pas de créer un programme à l'aide de PHP.
Ouverture d'une connexion avec un hôte distant, vous envoyez une ligne à la prise, vous obtenez une ligne de la prise. PCP ne comprend rien dans ces lignes et ne sera pas un dialogue pour vous! C'est vous devriez bien comprendre ce que vous voulez envoyer à la prise et quoi obtenir! Par conséquent, prenez le programme TELNET, connectez-vous à l'hôte souhaité et essayez de faire ce que vous voulez faire le PCP.
Si vous ne travaillez pas le script avec des sockets - courir dans la montre de veau ce qui se passe!
La requête SQL est une chaîne. Vous devez clairement imaginer quel type de demande sera à la suite de votre code PCP rusé! Le serveur de base de données ne comprend pas les conceptions de Intval, date, mktime, etc. Ceci est tout le code PCP. Le résultat duquel sera la chaîne de la bonne requête SQL. Avant d'écrire un code PCP, vous devez clairement imaginer comment la requête SQL devrait ressembler à un résultat!
Si vous n'exécutez pas SQL Query 0, envoyez-le sur l'écran et voyez ce qu'ils tournaient avec votre script!

Conclusion.
Le débogage est la principale occupation d'un programmeur.
Le débogage est le moyen unique et le plus puissant de trouver une erreur dans le programme.
La débogation consiste en deux composants principaux:
1. Simplifiez l'exemple autant que possible. Si votre programme ne fonctionne pas, qui dessine le formulaire, reçoit les données, enregistre ces formulaires à la base de données et les affiche à nouveau, puis faites défiler le programme sur les composants et suivez-le.
Si vous ne travaillez pas comme une définition complexe sous-programmation des performances des cuisiniers - écrivez premier test en deux lignes pour vous assurer que vous pouvez au moins exposer et lire la cuisson.
2. La sortie des informations de débogage.
Vérifiez la valeur de chaque variable! Chaque valeur renvoyée par la fonction!
Ne fonctionne pas localné? Affichez-le à l'écran et copiez-le sur le navigateur!
Le fichier est-il écrit une chaîne vide? Vérifiez les composants de cette chaîne à chaque étape de sa création et l'afficher!
Assurez-vous que l'écran est affiché? Soins Écrivez dans un fichier sur testa Ligne! Marqué directement au script! Réduisez le nombre d'inconnus!
Et ne voyez toujours pas ce que le navigateur montre, mais le code HTML source!

J'espère que je pouvais au moins expliquer les principes de ces classes.
Débogage réussi.

Avez-vous aimé l'article? Partager avec des amis: