勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

PHPでメルマガを配信する方法2

   

以前にPHPでメルマガを配信する方法を書いたけど、BCCだと相手の名前などユーザー情報を記述するわけにはいかず、また、BCCの件数に制限があるみたく、数千件以上配信する場合は小分けにする必要がありそう。なので1件ずつ処理する方法を考えた。

 

■ソース

mail.php

 

send.php

 

■使い方

メール本文やタイトルを入力するフォームを作って、その受け取り先をmail.phpにする。mail.phpからsend.phpをバックグラウンド処理させる。尚、フォームの時点で現在配信中のフラグが立っていないかチェックし、もしも配信中のフラグがあれば「現在配信中のためお待ち下さい」的な表示にし、フォームは非表示にするのが良さそう。

 

■バックグラウンド処理

普通にPHPで処理しようとするとブラウザを開きっぱなしにしないといけないけど、これだと途中で閉じたりとかページ更新された場合にどうなるのか分からず怖い。なので、バックグラウンドで処理できないかと調べたらexec関数でいけるらしい。mail.phpにも書いているけど以下の形で使う。

最初は引数をsend.php?hoge=1&name=aaaみたいに書いたけど、そうではなく半角スペースで区切って記述する。

受け取り側は$argvという変数で受け取る。$_GET[]では受け取れないので注意。また、$argv[0]はスクリプト名になるので$argv[1]以降を使う。

 

■$argvリファレンス

http://php.net/manual/ja/reserved.variables.argv.php

 

■execリファレンス

http://php.net/manual/ja/function.exec.php

 

■その他

バックグラウンド処理ってのは初めてだったので勉強になった。まだ実装は出来ていないけど概ね今回の構想でいけそう。

 - PHP

  関連記事

images
PHPでランダムな値を取得するケース諸々

テストデータを作成する際に、ランダムな値を入れたかったけど、 色々ケースがあった ...

no image
PHPでもキャッシュで画像が表示されない

ここみたいにキャッシュの影響と考えられるケースが発生した。 結果的にキャッシュっ ...

msyql-image
MySQLiでFOUND_ROWS(全件数取得)

MySQLiでFOUND_ROWS(全件数取得)。 $sql = ' SELEC ...

images
PHPで配列に特定の値が入っているか検索

PHPで配列に特定の値が入っているか検索して trueかfalseを返したい、と ...

msyql-image
MySQLでカンマ区切りの検索

カンマ区切りで入っているデータを検索する場合に ピンポイントな関数があったのでメ ...

images
PHPでサイトURLからtitleとRSS用URLを取得

サイトのURLからRSS用URLとサイトタイトルを自動で取得したかった。その方法 ...

images
PHPで文字列の操作(検索、置換、切り出し)

しばしば行う文字列の操作をまとめておく。 ----- ■文字列の長さを調べる e ...

images
フォーム用テンプレPHP

<?php ini_set( 'display_errors', 0 ); ...

msyql-image
MySQLのREGEXPで半角記号を検索したい場合

MySQLのREGEXPで半角記号を検索したい場合 \\を付けてエスケープしない ...

images
PHPでcharset

header("Content-Type: text/html; charset ...