教祖の皆さん、実行時に特定の拡張機能をアンロードできる PHP の隠された宝石はありますか?
3 に答える
いいえ、それは不可能であり、おそらく決してありません:
[2011-02-08 11:34 UTC] リクエストごとに rasmus@php.net
拡張機能をアンロードすることは、パフォーマンスの観点からは現実的ではありません。また、次のリクエストは、拡張機能が存在することを期待するページに対するものである可能性があるため、次のリクエストのためにアンロードしてアンロードしたままにすることはできません。
ただし、dl()
とにかく使用することはお勧めしません。最近のバージョンでは、CLI バージョンでのみ使用できます。
別の観点から:実行中のPHPインタープリターから拡張機能を削除することはできません。これは、PHPインタープリターの状態が元に戻せない方法で変更された可能性があるためです。たとえば、多くの拡張機能はロード時にクラスを登録します。これらのモジュールには、アンロード時にこれらのクラスの登録を解除するコードはありません。さらに悪いことに、スクリプトがすでに実行されている場合は、これらのクラスのインスタンスがすでに含まれている可能性があり、クラス定義を削除して操作するとインタープリターがクラッシュします。
回避策として、PHP CLI またはその組み込みサーバー ( php -S
) を使用している場合は、常に-n
/を指定--no-php-ini
して を無視できるphp.ini
ため、実行時にすべての拡張機能がアンロードされます。テストに便利です。