質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

2回答

2777閲覧

cakephpの実行URLをcronしたい

sabo

総合スコア15

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2015/09/25 02:52

cake初心者です。
cakephpで 実行したいURLが
/items/submit/56/
だったとします。

これをcronで、定期的に一日一回稼働させたいのですが、

0 2 * * * /usr/bin/ /var/www/html/items/submit/56/

のような記述をしたのですが、
どのような設定をしたらよいかわかりません。
アドバイスをお願いします!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

curl, wgetが使えないならPHPを用いて
0 2 * * * /usr/bin/php -r "file_get_contents('http://yourdomain.jp/item/submit/56/ ');"
なんていうクーロンはどうでしょうか。
/usr/bin/phpは環境によってパスが違う可能性はあります。

phpのfile_get_contentsでアクセスすることが出来ます。
php -r で<?phpを省略してphpのコマンドを記述して実行することが出来ます。

もっとも、cakephpの流儀にしたがってコマンドライン用のアプリを書いたほうが一番いいと思いますが・・・。
今回の場合だと外部に公開しているURLになるため、踏まれたらその瞬間バッチが走ってしまいますし・・・。

投稿2015/09/25 07:15

sakapun

総合スコア888

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sabo

2015/09/29 07:12

sakapunさんありがとうございます。 phpの記述で試してみます。 cakephpのコマンドラインについても勉強してやってみます。 たしかにセキュリティ的には 踏まれたらまずいですが、一応basic認証はかけています。
sakapun

2015/09/29 08:11

ベーシック認証かかっている場合、file_get_contentsは通らないかと思ったのですが、下記のようにするとできるみたいですね。 file_get_contents('http://user:password@example.com/hoge/fuga'); それでは頑張ってください!
guest

0

wget, curlといったコマンドが利用できる環境であれば、それらを使うことで実現できそうです。

wget [実行したいurl]

実行したいurlには、http://localhost/item/submit/56/
のようにurlを指定してください。

postパラメータが必要な場合は、curlを利用してみてください。
以下、参考urlです。
http://takuya-1st.hatenablog.jp/entry/20121121/1353477494

投稿2015/09/25 03:05

takyafumin

総合スコア2335

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sabo

2015/09/25 03:34

takyafuminさんありがとうございます。 さっそく 調べてみたところ  hetemlのサーバーでして curl wget使えない環境のようでした。 他の解決方法があればいいのですが・・・・
takyafumin

2015/09/25 15:06

curl, wgetが利用できない環境ですと、sakapunさまの回答にあるようにphpをコマンドラインから実行するのが良いかと思います。 具体的なコマンド例はsakapunさまの回答にある通りです。 postする場合は少しphp処理が複雑になります。 バッチ処理であれば以下のドキュメントにあるようにcakephpのコンソールアプリケーションを作成する方法が良いです。 HelloWorldのサンプルがありますので、それを真似して作成後、cronから実行してみるとイメージがつかめるかと思います。 http://book.cakephp.org/2.0/ja/console-and-shells.html 実際にはその中で「file_get_contents」や以下のページにあるように「HttpSocket」を利用してURLへリクエストを送信するプログラムを作成してください。 http://qiita.com/n0bisuke/items/d6b301b93103113bbdc5 また、そもそも「/var/www/html/items/submit/56/ 」のURLは本来Webからアクセスさせないものであれば、「/var/www/html」には配置せず、cakephpのconsoleアプリとして作成し、Webからはアクセスできないようにするとセキュリティが確保されます。 (sakapunさまが懸念としてあげていらっしゃる「踏まれたらその瞬間バッチが走ってしまいますし・・・。 」という点への対応です。)
sabo

2015/09/29 07:18

takyafuminさん。 詳細ありがとうございます。 コンソールについてURLありがとうございます。わかりやすそうです。 こちらをみてやってみます。file_get_contentsをつかったやり方がよさそうです。 また、WEBからアクセスしないような場所にすると画面からクリックして実行する画面を確認できず、現在はbasic認証をかけて対応しています。 コマンドラインから実行、確認するというところがあまり得意でないこともあるのですが・・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問