[PHP-users 30281] Re: PHPプログラムとサーバー負荷の関係・まとめ

Chikara Wakae wakae @ hottaweb.co.jp
2006年 9月 8日 (金) 11:58:33 JST


若江です。

みなさんからのインプットを参考にいろいろとコードをいじってみた結 
果、
まだ実際にメールは送っていませんが、CPU負荷を常時10〜 
20%に押さえる事ができました。
ありがとうございました。

ご指摘頂いた細かな点を除いた主な変更点は、
> $sql = "SELECT メールアドレス FROM MAIL_LIST
> ORDER BY メー ルアドレス";
で全てのアドレスデーターを一気に取得するのではなく、

"SELECT DISTINCT TOP 100 メールアドレス FROM MAIL_LIST
WHERE 送信フラグ = Y ORDER BY メールアドレス";
として100件ずつ取得して、メールを送信した後に
odbc_free_result() - sleep()という流れをwhileで繰り返すよ 
うにしました。
(重複するメールアドレスが複数あるので、DISTINCTを入れてい 
ます。
そのうち重複しているデーターを削除する予定ですが、
このままでもそれほどSQL文の実行には時間はかかっていませ 
ん。)

MS SQLではLIMIT x, yが使えないので、変わりに送信フラグを
メール送信後にNに変更する事で対処しました。


goungounさん

> 現状、うかがい知れないことですが、
> まとめて送るんだったらBccにメアド並べたほうが
> いいんじゃない?とか・・・
それも考えたのですが、BCCですとスパムフィルターに引っかかる
可能性があったので、やむなく上の方法で対処しました。
インターネット全体のトラフィックとしてみた場合でも、
BCCの方が理想的なのですが...。

西村さん

> プロファイラは拡張モジュールです。
> Zend製品があれば手軽ですが・・私はxdebugと 
> WinCacheGrindを使っています。
なるほど。教えていただいた事を改めて調べてみましたが、非常に便利 
そうです。
また一つ良い事を知りました。


PHP-users メーリングリストの案内