PHP のメモリ制限を増やす方法と静的クラスの使用に関する個人的な意見
もちろん、静的クラスには、いくつかのステートレス ツール クラスの実装に非常に適しているという利点もあります。しかし、ほとんどの場合、システムの早期の固定化を避けるために、より多くのオブジェクトを使用し、静的クラスを使用しないほうがよいという私の主観的な傾向があります。 。ところで、静的クラスがオブジェクトより速いなんて誰も言わないことを祈ります。
PHP プログラムを実行すると、通常、「致命的なエラー: 許容メモリ サイズ xxxxxx バイトが使い果たされました」というエラーが発生します。これは、PHP スクリプトがメモリを大量に使用し、システム設定の最大メモリを超えていることを意味します。許可された。この問題を解決するには、まずプログラムに過剰なメモリが割り当てられているかどうかを確認する必要があります。プログラムに問題がない場合は、次の方法で PHP のメモリ制限 (memory_limit) を増やすことができます。
php のメモリ制限値を確認する
この値を確認するには、view-php-info.php などの空の php ファイルを作成する必要があります。次に、その中にコードを貼り付けます。
このスクリプトを Web サーバーに置き、ブラウザで呼び出します。現時点では、以下に示すように、PHP 環境設定に関する情報を確認できます。その一部は「memory_limit」に関するものです。
注: このメソッドを使用して php その他を表示できます。パラメータ設定、memory_limit だけでなく
memory_limit はどのくらいに設定する必要がありますか?
これはアプリケーションの要件に完全に依存します。たとえば、WordPress ではコア コードを実行するために 32MB が必要です。 Drupal 6 では、この値が少なくとも 16MB である必要があり、32MB に設定することをお勧めします。多数のプラグイン、特に画像処理を必要とするプラグインをインストールする場合は、128MB 以上のメモリが必要になる場合があります。
memory_limit の設定方法
方法 1: php.ini
最も簡単または最も一般的に使用される方法は、php.ini
1 を変更することです。適切な値を見つけてください Web サイト上で有効となる php.ini ファイル PHP パラメータを設定できる場所は複数あるため、正しい設定ファイルを見つけて変更を加えることが最初のステップです。上記の方法で php ファイルを作成し、その構成パラメータを表示すると、「ロードされた構成ファイル」項目が表示されます。例は次のとおりです。
Linux ユーザーの場合、 「php -i | grep Loaded Configuration File」を実行して、対応する設定ファイルを見つけます。 Windows ユーザーの場合は、php インストール ディレクトリ内の php.ini を変更してみてください。
2. php.ini を編集します。php.ini で「memory_limit」項目を見つけます。ない場合は、このパラメータをファイルの最後に追加できます。以下にいくつかの設定例を示します。
memory_limit = 128M; 128M を任意の値に変更できます。
ファイルを保存します。
3. Web サーバーを再起動します。が Web サーバーである場合は、次のコマンドを実行します。
httpd restart
場合によっては、php.ini をプライベートに変更することが許可されない場合があります。たとえば、仮想ホスティング サービスを購入したが、サービス プロバイダーがこのファイルの変更を許可していない場合です。次に、memory_limit の値を増やすための他の方法を検討することをお勧めします。
方法 2: .htaccess
注: このメソッドは、php が Apache モジュールとして実行される場合にのみ有効です。 Web サイトのルート ディレクトリで「.htaccess」ファイルを見つけます。ファイルがない場合は、自分で作成できます。次に、次の設定を追加します
php_valuememory_limit 128M; 128M を任意の値に変更できます
方法 3: 実行時に php のメモリ設定を変更します
次のコマンドラインを PHP コードに追加します。
ini_set('memory_limit','128M');
memory_limit の変更に失敗しました
仮想ホストを使用している場合、memory_limit の値の変更に失敗する可能性がありますメモリ制限。これに対処する方法については、サービス プロバイダーに問い合わせる必要があります。通常、サービス プロバイダーでは設定できる最大値が制限されているか、まったく変更できません。その環境が本当に要件を満たせない場合は、別のホスティングプロバイダーへの変更を検討することをお勧めします。
ヘーゲルには「存在は合理的である」という有名な言葉があります。これを引数として使用すると、静的クラスの使用は合理的でなければなりません。ただし、極端な場合には、コードが静的クラスに依存しすぎると、その劣化を解決する必要があります。これもケシと同じでハーブとして薬効はありますが、不謹慎に大量に使用するとハーブになってしまいます。
静的クラスとは何ですか?
いわゆる静的クラスとは、オブジェクトにインスタンス化する必要がなく、静的な方法で直接呼び出すことができるクラスを指します。コードは次のとおりです。
class Math{ public static function ceil($value) { return ceil($value) } public static function Floor($value) { return Floor($value) }} ?>
このクラスが果たす役割は名前空間に似ています。これが、多くの人が静的クラスを使用することを好む最も直接的な理由かもしれません。
静的クラスの問題
本質的に、静的クラスはプロセス指向です。通常、静的クラスは元のプロセス指向のコードを機械的にまとめただけなので、結果はクラスの形で存在しますが、この時点のクラスは皇帝の新しい服のようなものです。静的クラスは実際にはオブジェクト指向のシェルを身に着けており、プロセス指向のことを実行していると言えます。
オブジェクト指向設計の原則の 1 つ: 実装のためのプログラミングではなく、インターフェイスのためのプログラミング。これにはどのような違いがあるのでしょうか?例: 価格の要因はさておき、個別のグラフィックス カードを搭載したコンピュータと統合グラフィックス カードを搭載したコンピュータのどちらを好みますか?ほとんどの人はディスクリートグラフィックスカードを選択すると思います。独立したグラフィックス カードはインターフェイス プログラミングをターゲットとみなすことができ、統合グラフィックス カードは実装プログラミングをターゲットとみなすことができます。実装固有のプログラミングの欠点は明らかです。変更の可能性が失われるということです。
以下に記事管理システムの例を示します。
class Article{ public function save() { ArticleDAO::save() }}?Article 必要なドメイン ロジックを実装し、データの永続化を ArticleDAO に任せます。 ArticleDAO は静的クラスであり、マザーボードに組み込まれた統合グラフィックス カードと同じくらい変更が困難です。ただし、呼び出し時に静的クラスの名前が使用されるため、実際には、それを実現するメソッドがいくつかあります。 🎜> class Article{ private static $ dao = 'ArticleDAO'; public static function setDao($dao) { self::$dao = $dao; } public static function save() { $dao = self::$dao; dao::save(); } }?>
変数を使用すると、実行時に使用する静的クラスを設定できます:
Article::setDao('MockArticleDAO');www errenzhuan.cc;Article:: save();?>
この実装は Mock の問題を解決しているように見えますが、まず、元のコードを変更し、開始と終了の原則に違反します。変数、および静的変数は共有状態であるため、他のコードの実行を妨げる可能性があるため、これは完璧な解決策ではありません。
追加の説明では、動的言語の特性を利用して、実際には別のクラス定義ファイルを必要とするだけで Mock を実装できますが、これには欠点もあります。実装は何度も変更されていますが、実際には要求する機会は 1 回だけです。そうしないと、重複定義エラーが発生します。
注: 場合によっては、静的遅延バインディングを使用すると、静的クラスのテスト容易性も向上します。PHPUnit を参照してください。
オブジェクトの値
静的クラスを放棄して代わりにオブジェクトを使用する場合、記事管理システムの例をどのように実装すればよいでしょうか?コードは次のとおりです。
class Article{ private $dao; public function __construct($dao = null) { if ($dao === null) { $dao = new ArticleDAO() } -> setDao($dao); } パブリック関数 setDao($dao) { $this->dao = $dao; } パブリック関数 save() { $this->dao->save(); ?>
実際、ここではよく呼ばれる依存関係注入テクノロジが使用されており、コンストラクターまたはセッターを通じて依存オブジェクトを注入します。
$article = new Article(new MockArticleDAO());$article- > save();?>
オブジェクトには独自の状態があり、共有された状態は他のコードの実行を妨げません。

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

繊維はPhp8.1で導入され、同時処理機能が改善されました。 1)繊維は、コルーチンと同様の軽量の並行性モデルです。 2)開発者がタスクの実行フローを手動で制御できるようにし、I/O集約型タスクの処理に適しています。 3)繊維を使用すると、より効率的で応答性の高いコードを書き込むことができます。

PHPコミュニティは、開発者の成長を支援するための豊富なリソースとサポートを提供します。 1)リソースには、公式のドキュメント、チュートリアル、ブログ、LaravelやSymfonyなどのオープンソースプロジェクトが含まれます。 2)StackOverFlow、Reddit、およびSlackチャネルを通じてサポートを取得できます。 3)開発動向は、RFCに従うことで学ぶことができます。 4)コミュニティへの統合は、積極的な参加、コード共有への貢献、および学習共有への貢献を通じて達成できます。

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

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

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

メモ帳++7.3.1
使いやすく無料のコードエディター
