いもろぐ - CakePHP Archive

Home > PHP > CakePHP

CakePHP Archive

さくらインターネットのサーバとCakePHPでcronを使う方法をすこし変えてみた。

さくらインターネットのサーバとCakePHPでcronを使う方法の修正版です。

よくきたはてダさんに指摘をもらった。

いやいや逆だろ

確かにそうだな。。。ということでちゃんと書く。(まだ微妙かもしれんが)

* cronで実行するPHPスクリプトの作成
* 該当スクリプトのテスト
* コンパネでcronの設定
* 正常動作の確認

cronで実行するPHPスクリプトの作成

まず、cronで実行させたいPHPのスクリプトを作ります。
今回は、users_controller.phpにmail関数を作り、メールを送信します。

PHP:
  1. function mail(){
  2.    
  3.     // 本文
  4.     $message = "message";
  5.     // 送信する
  6.     mail('hoge@hoge.com', 'My Subject', $message);
  7.    
  8.     }

次に、app/webroot/files以下に、cron.phpというファイルを作ります。

PHP:
  1. <?php
  2.     $_GET['url'] = "amazon/mail/";
  3.     require_once( dirname( dirname(__FILE__) ) . "/index.php" );
  4. ?>

該当スクリプトのテスト

次にさっきつくったPHPスクリプトが正常に動作するか確認してみます。
以下のURLにアクセスしてみて動いたらとりあえずOK。

http://hogehoge.com/files/cron.php

コンパネでcronの設定

さくらのコントロールパネルでcronの設定をします。

Ci080302174432

/usr/local/bin/php /home/(ユーザ名)/www/cakephp/app/webroot/files/cron.php

正常動作の確認

これで、定期的にhttp://hoge.com/users/mailが実行されるようになる。

とまぁ書き直してみたものの、このスクリプトをWEBからアクセスできるのはだめな書き方だからcomponentsとかにスクリプト書いてそれをcronで実行する形がいいのかな。ってかmailっていう例が良くなかったかもな。

ちなみに、さくらだと
OS FreeBSD 6.1-RELEASE-p10 i386
なので、fetchとかwgetってのが使えるらしい。

ってことを目的としては行いたいみたいなんだけど,さくらだとFreedBSDかな.fetch(あるいは入って入ればwget)をcronで使えばいいんじゃないのかな.

とりあえず、fetchとかwgetがよく分からんので調べる。

一番分かりやすい説明がここだった。
XREA & CORESERVER の cron と WordPress の wp-cron

XREAでの説明だけど、wgetの意味が分かった。

elfさんに指摘をもらうなんてWEBってすげーと思いつつ、自分が書くものには責任が持てる記事じゃないとなーとか反省。
どっちにしてもcronが良くわからないから勉強しなきゃな。

さくらインターネットのサーバとCakePHPでcronを使う方法

さくらインターネットのサーバとCakePHPでcronを使う方法

Ci080302174432

まず、さくらでcronの設定をします。
実行するコマンドに

/usr/local/bin/php /home/(ユーザ名)/www/cakephp/app/webroot/files/cron.php

とします。

次にCakePHPの設定。
app/webroot/files以下に、cron.phpというファイルを作ります。

PHP:
  1. <?php
  2.     $_GET['url'] = "users/mail/";
  3.     require_once( dirname( dirname(__FILE__) ) . "/index.php" );
  4. ?>

これで、users_controller.phpにmail関数を作る。

PHP:
  1. function mail(){
  2.  
  3. hogehoge
  4.  
  5. }

これで、定期的にhttp://hoge.com/users/mailが実行されるようになる。

参考サイト
アルファブレンド・プログラミングチップス
CakePHP cronを利用する
さくらインターネットでのcronの設定

CakePHP1.2系のインストール

CakePHP1.2系のインストールをしていたら、エラーがでました。
はて、1.1系はでなかったぞ。と思い調べて見る。

CakePHP- the rapid development php framework- Home-2008-02-11 -15-55-14
CakePHP- the rapid development php framework- Home-2008-02-11 -15-55-14 posted by (C)いもけん

調べて見ると、

PHP:
  1. /**
  2. * A random string used in security hashing methods.
  3. */
  4.     Configure::write('Security.salt', 'D1hG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');

このハッシュを変更してくてはいけないらしい。

CakePHP- the rapid development php framework- Home-2008-02-11 -15-59-28
CakePHP- the rapid development php framework- Home-2008-02-11 -15-59-28 posted by (C)いもけん

このように黄色の文字はなくなりました。

で、みどりのとこはなんて書いてあるのかというと、

Your tmp directory is writable.

The FileEngine is being used for caching. To change the config edit APP/config/core.php

Your database configuration file is present.

Cake is able to connect to the database.

なので大丈夫みたいだな。

apacheのvhosts(httpd-vhosts.conf)を使ってcakephpというドメインを使う方法

apacheのvhostsを使ってcakephpというサブドメインを使う方法

1.まず、「C:\Program Files\xampp\apache\conf\extra\httpd-vhosts.conf」をテキストエディタで開く。
そして、最後の行に、これを追加するだけ!

NameVirtualHost *:80


DocumentRoot "C:\Program Files\xampp\htdocs"
ServerName localhost


DocumentRoot "D:\cakephp"
ServerName cakephp

Order allow,deny
Allow from all

DocumentRootは作業ディレクトリ
ServerNameは自分が作りたいドメイン

2.「C:\WINDOWS\system32\drivers\etc\hosts」をひらく。
127.0.0.1 localhostの下に、
「127.0.0.1 cakephp」
を追加する。

すると、アクセスできるようになってるよ。

つまったところをピックアップ。

・localhostは入れること!!
・下の二行は入れること!
Order allow,deny
Allow from all
・apacheは再起動すること!!

CakePHPガイドブック買ったよ!!

CakePHPガイドブック

CakePHPガイドブック買ったよ!!

まだ最初の方しか読んでないけど、初心者であるおれが行き詰った箇所が多々説明されていてCakePHPを触ったことない人には絶対おすすめしたい本かな!

しかも、結構触ってる自分でも「あ~なるほど」と思える部分が解説されていて、既存のユーザにもすごくおすすめの本ですね!
著者の方々に感謝 :-)

そういえば、CakePHP のおいしい食べ方であったんだけど、1.2 pre-bet、1.1.18がついにきたそうな。

【CakePHP】コントローラ側でのバリデーション ファイルアップロード時のinvalidateの使い方

CakePHPの優れたバリデーションを紹介。
今回はコントローラ側での処理を考える。
モデル側でやれよとか言われそうだが。。。

コントローラ側

if(file_exists($this->data['User']['pic']['tmp_name'])){ //ファイルの存在を確認 tempの状態で確認
$filesize = filesize($this->data['User']['pic']['tmp_name']);//ファイルサイズを取得 tempの状態で取得
if($filesize < = 100000){ //100000byte以下しか受け付けない
if(ereg("(^[a-zA-Z0-9_-]+)\.(jpg)|(^[a-zA-Z0-9_-]+)\.(gif)",$filename)){ //jpgかgifしかアップできない
move_uploaded_file($this->data['User']['pic']['tmp_name'], $updir.DS.$filename); //ファイルをuploadフォルダに保存
} else {
$this->User->invalidate('error1'); // tagErrorMsg('User/error1') 拡張子チェック
}
} else {
$this->User->invalidate('error2'); // tagErrorMsg('User/error2') ファイルサイズが大きすぎ
}
}

ポイント
$this->User->invalidate('error1');
このerror1というのがビューでのエラーメッセージ表示と繋がる。

ビュー側
< ?php echo $html->file('User/pic');?>
< ?php echo $html->tagErrorMsg('User/error1', 'jpg かgif のファイルしかアップできません。或いはハイフン以外の記号があります。');?>
< ?php echo $html->tagErrorMsg('User/error2', 'ファイルサイズが大きすぎます。
100000 Byte 以下にしてください。');?>

これで、それぞれ指定したエラーメッセージをコントローラ側で処理できる。

ちなみにマニュアルにもちょこちょこ書いているので参考までに。

validateErrors();
;

保存に失敗時に、エラーの数を返します。

validate();
;

モデルのバリデーションルールに基づいて、モデルのデータを検証します。バリデーションについては、 "データバリデーション"の章を参照してください。

http://cakephp.jp/doc/ch07s02.html
http://cakephp.jp/doc/validation.html

ideaxideaでCakePHP修行!

CakePHP修行! カテゴリー
http://www.ideaxidea.com/archives/cakephp/

きたこれ。
これでCakePHPユーザーが増えてくれないかなー。
オレも一回SNS挑戦したけどむずかったからこれに習ってつくろっかな。

【CakePHP】PHPによるJavaScriptを書かないAjax

PHPによるJavaScriptを書かないAjax

まだ見てないけど、CakePHPのことが100Pほど紹介されてるみたいですよ^^
これで2冊目!!!!

bake.phpではないらしいので、また違った視点でのCakePHPの開発の様子を見ることが出来そうですねー。

ソーシャルニュースサイトがCakePHPで動いてるんだって。

CakePHPで動いてる?サイト。「niftyトピックイット」

ci070413230802.jpg

http://topic.nifty.com/index.php
ここにアクセスすると見れます。

TechKnowledgeさんはよく発見したなー。すげーな。

symfonyが米Yahooに採用されたって結構さわがれてたけど、CakePHPも結構使われてると思うなー。
もじらのaddonに続いて大手の採用事例なのかなー。いいことだ。

CakePHPはもしもPHP6になっても大丈夫!

らしい。

CakePHP のおいしい食べ方

CakePHPの現在の様子と各バージョンについて

1.1系 開発終了(バグフィックスのみ)
1.2系 現在開発中(結構安定している。)
2.0系 1.2系であふれたものを入れている
3.0系 PHP6に対応するバージョン

らしい。

まぁPHP6になったときZendが頑張ってたらCakePHPは淘汰されてるだろうし、もっと面白いフレームワークがでてくるかもしれないけど、CakePHPがPHP6になっても動くってことはユーザとしてはCakePHPの意気込みを感じるなーと少しうれしくなった。

ホーム > PHP > CakePHP

Return to page top

track feed