[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 メーリングリストの案内