PHPでネットワークプログラミング【WWWの海を泳ぐ】
PHPでつくるネットワークプログラミング。(共用サーバーにて)
最初に
srcは公開しない(コピペーダーが出て共用SVに負荷をかけるのを避けるため)
ネットワークの基礎知識がある人が読めればおK
共用サーバーでやるときはCPUとメインメモリーを注視して!!
僕が作ったWWWクロラーはCPU占有率が当初98%になってしまい強制的にkillされてました。正直共用サーバーでこんなことして申し訳ないです。
わたしもサバ管をしてた時にこんなくそプログラム作るやつはヒネ!!っと思ってました。ごめんさいサバ管様。
さて本題です。
ここ数年はPHPやらjavaやらにどっぷり使っておりますが、元はネットワークやハードウェア大好き少年かつCENEでした。
一応CCNA保持しておりました・・・
んで最近やたらと検索で表示される情報が信用できない!必要な情報が表示されない!などの問題がよくでております。
これは結局google一強である為仕方ないことですね。
しかしネットの入り口がgoogleだけでは結局テレビやラジオと変わらない受動的な物になってしまわないでしょうか?インターネットとは能動的でなければならないと思います。故に今回phpではありますがWWW の海を泳いでみました。
手法としては
1・phpのネットワーク関数を利用してまずは逆引きを行います。逆引きから名前解決の正引きができる関数があるので便利ですね。
2・これにて取得できたドメインを元にページ内検索を行います。ディスクリですね。
といった手法で検索エンジンプログラムを作成してみました。
っが!!!
まずCPUへの負荷が半端ない。JPドメイン配下のみを泳ぐのですらヤヴァイ!CPUの占有率が95%を超えてましたし、90%を超えると強制的にkillされます。
帯域の占有率も半端ない・・・・
そこでチューンを致しました。sleep、null対応・・・正直久々です。javaで人力俺の声ヴぉーカロイドを作ったとき依頼です。cakephp3とかECキューブとかロジック以外なにも考えてない・・・・
とということで共用SVの時はゆっくり注意してtopコマンドでの監視を忘れないでください。いろんな人に迷惑をかけます。
ちなみにvagrantを用いたローカルからやったらPCと島の帯域をつぶしますのであまりやらん方がいいと思います。
一旦ここまで