Maison  >  Article  >  développement back-end  >  Pourquoi l’exécution de mon fichier PHP a-t-elle été interrompue et comment y remédier ?

Pourquoi l’exécution de mon fichier PHP a-t-elle été interrompue et comment y remédier ?

DDD
DDDoriginal
2024-10-31 18:57:29476parcourir

Why Was My PHP File Execution Interrupted and How Did I Fix It?

Interruption de l'exécution de fichiers PHP

Lors d'un récent effort de codage, une fonction PHP utilisée pour gérer les requêtes d'une application Android a rencontré un problème où certains des parties du code n'étaient pas exécutées. Plus précisément, le programme n'a pas pu accéder à une section spécifique dans laquelle un fichier était en cours de création.

Après enquête, les fichiers de débogage créés par le développeur ont révélé que le code dans la section n'était pas saisi. Cela a provoqué une analyse plus approfondie du code, en se concentrant sur les opérations de requête et de base de données.

Décodage de l'erreur

Lors de l'exécution de la requête, le programme recevait parfois un message d'erreur. indiquant "statut de table inconnu : TABLE_TYPE." Ce message déroutant indiquait un problème avec la connexion à la base de données.

Refactoring pour l'efficacité

L'approche initiale consistant à écrire une grande fonction avec plusieurs lignes dédiées à l'écriture de fichiers et à la base de données la manipulation s’est avérée inefficace et sujette aux erreurs. Pour résoudre ce problème, le développeur a opté pour une conception plus modulaire.

Deux nouvelles fonctions ont été introduites : file_put(), qui gérait l'écriture dans les fichiers, et checkin(), qui gérait les opérations de base de données. Diviser le code de cette manière a permis un débogage et une refactorisation plus faciles.

Interaction de base de données raffinée

Les interactions de base de données ont été encapsulées dans une classe MySql, fournissant une analyse plus structurée et plus efficace des erreurs. -interface résistante à la base de données. La classe gérait les établissements de connexion, l'exécution des requêtes et la gestion des erreurs, simplifiant ainsi les opérations de base de données au sein de la fonction checkin().

Exemple de code remanié

Le code révisé utilise désormais les nouvelles fonctions file_put() et MySql, résultant en une structure plus organisée et plus gérable.

<code class="php">function file_put($number, $data)
{
    $path = sprintf("C:/temp/wamp/www/file%d.txt", $number);
    file_put_contents($path, $data);
}

function checkin(MySql $DB, $TechID, $ClientID, $SiteID)
{
    $query = sprintf("SELECT `Type` FROM `Log` WHERE `TechID` = '%d' ORDER BY LogTime DESC LIMIT 1", $TechID);
    file_put(5, $query);

    $result1 = $DB->query("SELECT COUNT(*) FROM Log");    
    $result2 = $DB->query($query);

    foreach ($result1 as $row1) {
        list($count) = $row1;
        $data = "ClientID:$ClientID TechID:$TechID SiteID:$SiteID Count:$count";
        file_put(3, $data);
        foreach ($result2 as $row2) {
            file_put(4, $data);
        }
    }
}

$config = array(
    'server' => 'localhost',
    'name' => 'root',
    'password' => '',
    'db' => 'test',
);
$db = new MySql($config);

checkin($db, 1, 2, 3, 4);</code>

Conclusion

En refactorisant le code, en gérant les interactions avec la base de données via un classe et en divisant les responsabilités entre plusieurs fonctions, le problème de la non-exécution de la section de code a été résolu. Le code résultant est plus modulaire, plus facile à déboguer et robuste.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn