PHP 静的変数をキャッシュとして使用する方法_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:25:12
オリジナル
797 人が閲覧しました

次の PHP コード例は、ユーザーがパスワードをリセットするのに役立ちます。 requestResetPassword は、ユーザーのパスワードのリセット要求を受け取り、対応するチェックを実行します。再利用性を高めるために、パスワードを変更した後、パスワードのリセット操作を新しいresetPassword関数に割り当て、sendEmailを呼び出してユーザーに通知メールを送信しました。

コードをコピーします コードは次のとおりです:

/**
* パスワードをリセットするユーザーリクエストの受信者
*/
function requestResetPassword() {
//ユーザーが存在するかどうかを確認します
if( !checkUserExists( $_GET[' userid'] ) ) {T EXIT (申し訳ありません、ユーザーが存在しません。ユーザー アカウントを確認してください。 ');
}
resetpassword ($ _get [' userid ']), 'パスワードのリセットに成功しました', '新しいパスワードはxxxx '); }

/**
* ユーザーのパスワードのリセットを支援します
*/
function sendEmail( $userid, $title, $content ) {
//ユーザーが存在するかどうかを確認します
if( !checkUserExists( $userid ) ) {
return false; }

//メール送信操作
//少し...
return true;
}

/**
* ユーザーにメールを送信します
*/
function checkUserExists( $userid ) {
$user = getUserInfo( $userid ); !empty( $user );
}

/**
* ユーザーが存在するかどうかを確認します
*/
function getUserInfo( $userid ) {
//データベースをクエリしてデータを返すために使用されるクエリ関数があるとします
$ user = query( "SELECT * FROM `user` WHERE `uid`=" . intval( $userid ) );
return is_array( $user ) ? $user : array() ;
}


さて、問題はこれです。 3 つの関数はすべて、checkUserExists 関数を同時に使用して、ユーザーが存在しないことを確認します。これにより、追加のオーバーヘッドが発生します。
3つの中のcheckUserExistsを削除したい場合は可能のようです。ただし、後から一部の関数でresetPasswordまたはsendEmailが呼び出され、ユーザーが存在しない場合、システムでエラーが発生する可能性があります。
もう 1 つの解決策は、resetPassword のロジックを requestResetPassword に書き込み、少し後に sendEmail のロジックも同様に書き込むことです。このようにして、関数呼び出しが減り、データベース クエリが 1 回になり、パフォーマンスが向上します。ただし、パスワードのリセットと電子メールの送信の機能は再利用できず、単一責任の原則に違反し、コードの複雑さも増加します。
ただし、関数の分離と再利用性は非常に優れているため、実際のパフォーマンスに影響がある場合は、データベース クエリを減らすためにキャッシュを使用することを検討してください。共有する checkUserExists 関数を変更しました:



コードをコピーします

コードは次のとおりです。


/**
* ユーザーのデータを取得します
*/
function checkUserExists( $userid ) {
//ユーザーのチェック結果を記録するキャッシュを追加します
static $cache = array();

//現在のユーザー I は一度チェックされています (if (ISSET ($ Cache [$ Userid])) {
Return $cache [$ Userid];
}

$ User = GetUserInfo ($ Userid);
// 結果を記録しますキャッシュ
$cache[ $userid ] = !empty( $user ); return $cache[ $userid ];}

同じ方法を使用して getUserInfo 関数を変更することもできます。
ここで、コードの再利用性が向上すると、パフォーマンスを向上させるのが非常に簡単になり、パフォーマンスのボトルネックも発見して変更するのが簡単になることがわかります。この例はパフォーマンスに大きな影響を与えませんが、トラバーサルなど、再利用のためにトラバーサルを関数にカプセル化し、それを複数回使用する場合があります。これらの出費は、予想していたほど私のプロジェクトに大きな影響を与えなかったか、最小限でした。したがって、私はパフォーマンスの無駄を心配するよりも、コードの再利用性と保守性を向上させる方法に時間を費やすことを好みます。実際のパフォーマンスが要件を満たしていない場合は、ハードウェア構成を増やすことも検討できます。

http://www.bkjia.com/PHPjc/825179.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/825179.html技術記事次の PHP コード例は、ユーザーがパスワードをリセットするのに役立ちます。 requestResetPassword は、ユーザーのパスワードのリセット要求を受け取り、対応するチェックを実行します。再利用性を高めるために...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!