Github の多数の PHP 神レベル コードが苦情を引き起こしている
一昨日、作業効率を 70% 向上させることができるコードが github の PHP セクションに突然出現し、周囲の多くのネチズンから苦情と嘲笑を引き起こしました。世界は「すごい!」「よくやった!」「PHPは世界一の言語だ!」普段は真面目で勤勉なプログラマがユーモアたっぷりに活躍し、Githubは歓喜の海となった。
まず、この神聖なコードを見てみましょう:
このコードが行うことは 1 つで、PHP のガベージ コレクターを無効にします。次にネチズンは、PHP を無効にしてガベージ コレクターを使用する効果をテストしました:
前: メモリ使用量: 163.66 MB (ピーク: 403.82 MB)、時間: 246.25 秒
後: メモリ使用量: 163.34 MB (ピーク: 350.36MB)、時間: 99.55 秒
特定の PHP プログラムの実行に必要な時間が 246.25 秒から 99.55 秒に短縮されました。変更前: メモリ使用量: 152.71MB (ピーク: 335.9MB)、時間: 195.99 秒
変更後: メモリ使用量: 164MB (ピーク: 308.02MB)、時間: 104.06 秒
一部の PHPプログラムの実行に必要な時間は 195.99 秒から 104.06 秒に短縮されました。……
一般に、ガベージ コレクターを無効にすると、PHP の動作効率が 70% 向上します。
PHP のガベージ コレクションは非常に信頼性が低いため、以前の設計の本来の目的は何だったのでしょうか?
C/C ではメモリの使用と解放は非常に面倒な作業であり、何かを省略するとリソースの無駄やメモリ リークが発生する可能性があります。 。したがって、PHP 設計時にこの問題を回避するために、不要なオブジェクトのメモリを自動的に解放するガベージ コレクターが導入されました。
PHP はリサイクル アルゴリズムを実行するときに余分な時間を消費することに注意してください。小規模なプロジェクトでは、この追加の消費は最小限ですが、大規模なプロジェクトを実行する場合、複数のリサイクル スレッドが同時に開始されるため、この消費はプログラムの実行時間が長くなることにより大きな影響を及ぼします。
PHP のガベージ コレクションを無効にすることは、プログラムの実行効率を向上させる最も単純かつ大雑把な方法です。これは、脚や足を怪我した場合、最も簡単な方法は切断することと同じです。
神レベルのコードが発表されるとすぐに、github 上のプログラマは大喜びしました。
最初に登場した Homm は、この処理方法に驚きを表しましたが、なぜそうなるのか理解できませんでした。私はこの方法で実行し、この処理方法は良くないと客観的にコメントしました:
すると、到着した笑顔の技術者がからかい始めました。コメント、PHP を入れましょう。カーネルは無効になっています。なぜこれを行ったのかは説明しません。:
PHP が世界初だと言っているだけですいくつかの国でバージョンがあり、いくつかのコードを使用するだけで効率が 70% 向上すると言われています。PHP は世界初の言語として十分に評価されています。
PHP のガベージ コレクション メカニズムはみんなのものになりましたまた、PHP のガベージ コレクションを単に無効にするだけではメモリ オーバーフローなどの問題を解決できないこともわかっています。この競合は将来、どのように処理されるのでしょうか?
リウ・ウェイウェイ
- は理解しているようです。

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









