人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

会員制サイトphp+mysqlに関する質問です。
登録したユーザーの情報はテーブル(User)に記録されています。
テーブル(User)のフィールドは以下の4つです。
()内がフィールド名です。

会員コード(UserCD) text
パスワード(Pass) text
ニックネーム(Name) text
会員期間(Period) int 11

10分経過するごとに会員コード100の会員期間の数値を1増やしていきたいです。
1時間に6増えることになります。
※特定の会員のみ増やすため、ここではコード100としています。

cronで10分おきに
/var/www/vhosts/smple.jp/httpdocs/period.php
を作動させ指定した会員コードのPeriodを1増やしたいのですが

この場合のperiod.phpに記述する内容を教えてください。
ご教授いただけると幸いです。
よろしくお願い致します。

MySQL - 5.0.45


●質問者: xptree
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:.jp D.P MySQL name PHP
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● mfkcesse
●20ポイント

(はてなにより削除しました)


2 ● ながの
●20ポイント
<?php 

//DBへ接続開始 サーバー名 ユーザー名 パスワード
$dbHandle = mysql_connect("あなたのDBサーバ","DBのユーザID","DBのパスワード");

//DBの接続に失敗した場合はエラー表示をおこない処理中断
if ($dbHandle == False) {
print ("can not connect db\n");
exit;
}


//db名
$db = "あなたのdb名(スキーマ名)";

//usercd=100 のレコードを対象に、periodを+1します。
$sql0 = "update user set period=period+1 where usercd = '100'";

//SQL文を実行する
$rs = mysql_db_query($db,$sql0);

//コミット
$rs = mysql_db_query($db,"commit");


//DBへの接続を切断
mysql_close($dbHandle);

?>

簡単にやるならこんな感じに成ると思います。

トランザクション開始、コミット、ロールバックは必要ならば適宜。

/*

* PHPのバージョンを書いていただくと、より的確な回答が得られるかもですね。頑張ってください。

*/

http://phpspot.net/php/man/php/function.mysql-db-query.html

http://www.syboos.jp/database/doc/20071105160750227.html

◎質問者からの返答

回答ありがとうございます。

教えて頂いたとおりperiod.phpを作成したのですが

直接period.phpにアクセスするとperiodは1増えますが

cronでは増えません。

cronでは増えないのは何が考えられるでしょうか…?


3 ● hijk05
●20ポイント

>cronでは増えないのは何が考えられるでしょうか…?

1.実際に指定したプログラムが動いていない

2.エラー終了して、DBがロールバックされている

3.明示的にcomitを発行しないとロールバックする仕様になっている

#Webで実行する場合は、autocomitモードで、明示的に指定しなくてもcommitされる。

http://q.hatena.ne.jp/answer


4 ● ながの
●20ポイント

確認すべきは以下です。

A.cronが実行されているか?

B.period.phpが実行されているか?

C.SQLが発射されているか?

D.コミットされているか?


プログラム単体で起動するときはOKで、

cronで起動するとNGの場合。

経験上、大抵はBで、その原因は下記のいずれかです。

  1. crontabの起動間隔指定の書き方が間違い。
  2. 実行権限がない。
  3. period.phpの場所を書き間違っている。
  4. 環境変数が通っていない。

http://x68000.q-e-d.net/~68user/unix/pickup?crontab

ここにcronを書くと、よりよい回答が得られるかもです。


5 ● pahoo
●20ポイント

シェルスクリプトはCLI版(コマンドライン版)PHPとして実行していますか?

詳しくは「PHPのコマンドライン実行」をご覧ください。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ