CRON
本日もWebサイト開発のお仕事のお話です。
昨夜CRONを初めて使ってみまして、レンタルサーバー上からPHPの実行ファイルを定期実行させる事に成功しました(^-^)v
CRON試してみる!
まずは簡単なPHPファイルのサンプルを作って、CRON上から呼び出してみたいと思います。
いきなりDB更新は怖いので、ファイルを出力するのをやってみようかと。
「sitemap.xml」というファイルを出力するものです。
早速レンタルサーバー上にアップして動作させてみたいと思います!
PHPファイル名は「test_cron01.php」という名前にします。
さぁ、2分経過しました!
FTPでディレクトリを確認すると・・・
「sitemap.xml」ファイルが出力されていました!
無事に動きました!
という感じでechoやprintで何かを出力してもCRONだとブラウザ上に何か表示される訳じゃないので、テキストファイルを出力してみました。
案外簡単に動いてくれたので良かったです(^-^)v
複数のphpファイル
昨日調べた中では、参考にしたサイトの中で「複数のphpファイルが、相対パスでincludeやrequire_onceとかされている場合、エラーで動かない。」という記載があったので紹介していたのですが、
最近はそんな事はないというブコメを頂きました(^-^;
id:photoblgさん
外部から読み込んでも落ちたことはないですね。それ以外の問題じゃないですか?
CRONで外部のphpファイルをincludeしたりrequire_onceしたりしても特段問題ないんですね~(^-^)v
私の使っているレンタルサーバーは、Webサイト公開用ディレクトリとCRON動作用ディレクトリが全く別の階層に置く様に指定されていたので、Webサイト公開側のphpファイルをincludeしたりするのはやめて、1PHPファイルで完結する様に処理を記載して実行する様にして作りました。
なので、上記の件に関しては自分自身で試していなかったので、非常に参考になりました(^-^)/
最近のCRONで動かすPHPファイルでは相対パス表記でincludeやrequire_onceをしても問題ないそうです。
メール送信
CRONを使った定期実行でもう1つ行いたかったのは「メール送信」になります。
Webサイトのデータ更新後に通知をメールで送りたかったので、それをCRONで定時実行してメール送信したいのです。
しかし以前、PHPでメール送信周りを実装した時には「PEAR」をインストールしたりと結構面倒なことをしたので気が重い状態で作業を始めました(-_-;
以前PEARを使った時の話(サブブログに掲載)が下記。
「うーん、どうかな~」
と思いながらPHPの参考書である「PHP逆引きレシピ 第2版」を開いて探していたら・・・
PHP逆引きレシピ 第2版 (PROGRAMMER’S RECiPE)
- 作者: 鈴木憲治,山田直明,山本義之,浅野仁,櫻井雄大,安藤建一
- 出版社/メーカー: 翔泳社
- 発売日: 2013/10/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (9件) を見る
611ページの「7.8 メール処理」という章があるじゃないですか!!!
・・・(読み込み中)・・・
ふむふむ。
「メールを送るにはmb_send_mail()関数を使用します。」
とのこと!
「あれ?PEAR使わなくて良いの!?」
との事で、関数1つで簡単にメール送信ができるようです!
なんだ~、それなら簡単に実装出来るじゃないですか!
mb_send_mail関数
本のソースコードを参考に組んだソースが下記。
<?php mb_language("Japanese"); mb_internal_encoding("UTF-8"); $to = 'to@hoge.ne.jp'; $subject = 'テストメール'; $message = 'これはテストです。'; $headers = 'From: hoge@hoge.com'."\r\n"; if (mb_send_mail($to, $subject, $message, $headers)) { echo "メールが送信されました。"; } else { echo "メールの送信に失敗しました。"; } ?>
で、試しにWebサイトに仮置きして実行してみると・・・
無事にメールが届きました(^-^)/
ただ、このメール送信怖いですね。
Fromのメールアドレスって適当に指定しても、メールサーバーとか通さずに送れちゃったんですよ(-_-;
こんな簡単にメール送信できるなら、そりゃあスパムメールもなくならない訳ですね。
簡単にメアド偽装ができちゃいますもんね、これって。
まぁ色々とレンタルサーバーとかでも対策は練られているんでしょうけど、大量のメール送信が実行されたらスパムメールとして送信できなくする、など。
いずれにしても、これでCRONでPHP実行ファイルから簡単にメール送信できる事がわたっかので収穫でした(^-^)v