PHPでこれを実行しようとしないでください。PHPが関与する頃には、もう手遅れです。メモリはすでに割り当てられています。
任意のレイヤーでIPアドレスを禁止できますが、最も少ないリソースを使用する最低レベルは、必要なルートです。これは通常、ファイアウォールです。少なくとも、iptables(Linuxファイアウォール)が使いたいものです。これを自動化できるFail2Banなど、他の人が言及したツールがあります。外部ファイアウォールの方が良いでしょう。
問題のあるIPアドレスを禁止しようとするだけでなく、リソースをより有効に活用するようにしてください。要求のリソースが少ない場合、攻撃が有効になるまでに時間がかかります。
Apacheも大量のメモリを使用します。mod_phpを使用している場合、PHPはすべてのApache子プロセスの内部にロードされるため、さらに悪化します。つまり、静的コンテンツ(css / js / images)へのリクエストでさえ、PHPが使用されていない場合でもPHPをロードしています。代わりにFastCGIを使用してこの問題を解決できます。mod_fcgidは良いオプションです。
また、リソース効率の高い他のWebサーバーもあります。Nginxは私のお気に入りです。Lighttpdもあります。Litespeed(Apacheの代わりのドロップイン)のような多くの人々。
Apacheを使い続けたい場合は、できる限りチューニングすることを検討してください。.htaccessを無効にすることを検討してください。理由は次のとおりです。