LAMP環境でWEBアプリを作成しています。

特定の日時にならないと作動しない仕組みを構築したのですが本番サーバでのテストの仕方で悩んでいます。
ローカル環境では問題ないのですが他の人間に確認してもらう為、本番サーバでテストする必要があるのです。

サーバ自体の時間を変更してしまえば検証出来るのですが他のシステムや機能に影響が出るため出来ません。
出来れば特定ディレクトリ、特定バーチャルドメインのみで変更がしたいのですが可能でしょうか?

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/12/28 10:19:56
  • 終了:2011/01/04 10:20:03

回答(3件)

id:asuka645 No.1

あすか回答回数856ベストアンサー獲得回数972010/12/28 10:46:38

ポイント27pt

「特定の日時にならないと作動しない仕組み」というのがどのようなものか分かりませんが、

もしcronで実現しているのでしたら、

crontabのユーザー権限が及ぶディレクトリに対してしか発動しませんので、

crontabを保有しているユーザーの権限を調整してみてください。

id:php-beginner

cronではなく単純にPHPで日付をIF条件としています。

簡単に書くと下記みたいな感じ。

IF(date('Y')=="2011"){

 echo "年が開けて初めて出力される" ;

}

date関数はサーバの時間を取得しているのでサーバの時間を変更しないと検証する事が出来ません。

2010/12/28 11:00:33
id:k-tan2 No.2

k-tan2回答回数401ベストアンサー獲得回数482010/12/28 11:25:06

ポイント27pt

>出来れば特定ディレクトリ、特定バーチャルドメインのみで変更がしたいのですが可能でしょうか?

できません。

>サーバ自体の時間を変更してしまえば検証出来るのですが

サーバの時間を変更しなくても、ある程度確認でる仕組みにしておかなかったので無理です。

また、本番サーバで全テストを行うのは不可能ですから、

そういうテストは本番サーバーでは行わないです。

今回の場合なら、日付とか取得する関数は、ユーザー関数でラッピングしておいて

実際に、サーバーの日付を変えなくても日付を換えれるような仕組みを作っておくとか

そういう風にしないと無理ですね。

そういう仕組みがないのなら、本番サーバーとほぼ同一の環境で確認する以外にありません。

id:php-beginner

そうですかぁ。

タイミング見て書き直したいと思います。

ありがとうございました。

2010/12/28 11:35:57
id:taramonera No.3

taramonera回答回数79ベストアンサー獲得回数52010/12/28 19:01:03

ポイント26pt

$_SERVER["SERVER_NAME"]でドメインをみて

特定バーチャルドメインであれば●日後の日時を取得する

とすれば良いかとおもいますが、いかがでしょうか。


下記は1つの例です。

<?php
if( $_SERVER["SERVER_NAME"] === "xxx.xxx.jp" ){//特定のドメインであれば1週間後の時間をNOWに設定
	$timestamp = strtotime("+1 week");
	define( "NOW", date("Ymd", $timestamp) );

}else{
	define( "NOW", date("Ymd") );
}


if(NOW>="20110101"){

  //なんらかの処理
}
?>
  • id:asuka645
    >cronではなく単純にPHPで日付をIF条件としています
    PHPでは「特定の日時」が来るまで“待つ”ことはできません。
    まさかループで待機させているということはありませんよね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません