noshi’s diary

ゲームの事、映画やドラマ、思いついた事、プログラミングの事、雑記的なことを書いています

一斉送信の送信アドレスの重複処理

最近あった話。

送信先のアドレスをループしながら送信するphpスクリプトで送信した際に、文法エラーが発生して、メールが送れないという事態が発生した。

エラーが示す箇所は、 select distinct column from テーブル のところだった。このスクリプトで半年近くエラー無く送信できたのに。。。

このエラーが発生する際、不思議なことがあった。同一のネットワーク環境で、パソコンAのfirefoxブラウザで送信スクリプトを実行するとエラーが出て、パソコンBのchromeブラウザだとエラーが出ない。もう、はっきり言って意味がわかりません。

とりあえず、できることから対処してみることにした。

まず、エラーが出ているところのスクリプトの変更を考えた。

エラーが出ているのは、アドレス重複処理(ユニークアドレスのみに送信)箇所だったので、これの変更を考えた。でも普通に SELECT column(アドレスのcolumn) FROM テーブルにはできるだけしたくなかった。これだと、アドレス重複して送信しまうから。

ちょっと調べると、重複処理には

・SELECT distinct column(アドレスのcolumn) FROM テーブル ・SELECT column(アドレスのcolumn) FROM テーブル GROUP BY column(アドレスのcolumn)

のいずれかが使われるようだったので後者に変更。そして、送信したところ、変更後はエラーは出なかった。これで以後、エラーと謎な現象が起きないことを祈るばかり。