2

memcacheオブジェクトの有効期限を特定の日付に設定したいと思います。

cache.set(string, 1, 86400)

上記のステートメントでは、1日を設定できますが、日付が変更されても有効期限は切れません。これを処理する1つの方法は、1日の残り秒数を計算し、それを変数として提供することです。

もっと簡単で効率的な方法があるのではないかと思っていました。

4

2 に答える 2

5

documentationを見ると、有効期限パラメーターが次のように説明されていることがわかります。

オプションの有効期限。現在時刻からの相対秒数 (最大 1 か月) または絶対 Unix エポック時間。デフォルトでは、アイテムが期限切れになることはありませんが、メモリ不足のためにアイテムが削除される場合があります。float 値は、最も近い整数秒に切り上げられます。

基本的に、そこに入力した数値が 2592000 未満の場合、相対時間として解釈されます。したがって、数値 86400 は、設定されている時間である今から 86400 秒 (1 日) と解釈されます。

それよりも大きな数値を使用して、絶対時間を示したいと思うようです。UNIX タイムスタンプを取得するには、さまざまな方法があります。しかし、非常に簡単に行うことができます:

time_tuple = (2013, 2, 15, 0, 0, 0,0,0,0)
timestamp = time.mktime(time_tuple)
cache.set(string, 1, timestamp);

あなたの最初の考えは正しいです。現在のタイムスタンプと、必要な日付のタイムスタンプを見つけて、違いを提供するだけで、それも同等です。

于 2013-02-06T00:35:08.103 に答える
0

一日は、少なくとも毎時変化しますよね?クライアントまたはサーバーのいずれかが、特定の要求に関連するものを指定する必要があります。これは通常、クライアント アプリケーションにとってより適切なタスクです。

絶対タイムスタンプを指定できることに注意してください。これにより、1 日 (または少なくとも 1 時間) 再利用できるため、その有効期限がいつになるかを計算しやすくなります。

于 2013-02-04T00:28:03.137 に答える