PHP ファイル実行の中断
最近のコーディング作業で、Android アプリからのリクエストを処理するために使用される PHP 関数で、特定のエラーが発生する問題が発生しました。コードの一部が実行されていませんでした。具体的には、プログラムは、ファイルが作成されている特定のセクションにアクセスできませんでした。
調査の結果、開発者が作成したデバッグ ファイルにより、セクション内のコードが入力されていないことが判明しました。これにより、クエリとデータベース操作に焦点を当てて、コードをより深く分析することになりました。
エラーの解読
クエリの実行中に、プログラムは時折エラー メッセージを受け取りました。 「不明なテーブルのステータス: TABLE_TYPE」と表示されます。この紛らわしいメッセージは、データベース接続に関する問題を示していました。
効率化のためのリファクタリング
ファイルの書き込みとデータベース専用の複数行で大きな関数を記述する最初のアプローチ操作は非効率的であり、エラーが発生しやすいことが判明しました。これに対処するために、開発者はよりモジュール化された設計を選択しました。
ファイルへの書き込みを処理する file_put() とデータベース操作を処理する checkin() という 2 つの新しい関数が導入されました。この方法でコードを分割することで、デバッグとリファクタリングが容易になりました。
洗練されたデータベース インタラクション
データベース インタラクションが MySql クラスにラップされ、より構造化されたエラーが提供されました。データベースへの耐性のあるインターフェイス。このクラスは、接続の確立、クエリの実行、エラー処理を処理し、checkin() 関数内のデータベース操作を簡素化しました。
改良されたコード例
改訂されたコードでは、次のコードが使用されます。新しい file_put() 関数と MySql 関数により、より組織的で管理しやすい構造が実現しました。
<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>
結論
コードをリファクタリングすることで、クラスを作成し、複数の関数で役割を分担することで、コード部分が実行されない問題が解決されました。結果として得られるコードは、よりモジュール化され、デバッグが容易になり、堅牢になります。
以上がPHP ファイルの実行が中断されたのはなぜですか? どのように修正すればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。