勉強したことのメモ

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

  関連記事

PHPで日付の比較

以前に「締切日を設けて、今日の日付と比較して分岐させる」というもので 日付の比較 ...

PHPでソーシャル(SNS)ログインする方法

「facebook / twitter / Googleアカウントでログインする ...

DTIのVPSにCakePHPを導入する方法

他社さんと連携して仕事をする際に「フレームワーク何か使いますか?」と聞かれて「使 ...

PHPで日時比較時の注意

PHPで日時を比較する際にミスがあったのでメモ。 基本形は下記。 $limit_ ...

定数とグローバル宣言した配列

定数のメリットが分からず、ほとんど使ってこなかったけど 画像用のfunction ...

PHPで数字のプラスとマイナスを反転させる

gmp_neg http://php.net/manual/ja/functio ...

PHPでeval時のエラー

eval()'d code on line みたいなエラーが出てた。 よそのシス ...

PHPでプロキシ経由で他サーバーに接続

PHPでfile_get_contentsやcurlで他サーバに接続する際に自サ ...

ガラケーorスマフォ判別

ガラケーとスマフォの判別。 やりたい事はガラケーorスマフォで条件分岐させたい。 ...

フォーム用テンプレPHP

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