Set Transient expiration

I have a page that displays a random post every day. In order to change post every 24 hours I use

set_transient('totd_trans_post_id', $totd[0]->ID, (60*60*24));

What I’m wondering is this:

  • Does the countdown (60*60*24) start as soon as I have inserted and saved the code?
  • If yes: What happens if I let the code run for 23 hours, and then decide to “update” the code. Will the countdown restart?
  • If no one visits the site for 48 hours, will the expiration still take place? Or does someone have to visit after 24 hours to “run” it?

2 Answers
2

  1. The countdown would start as soon as the transient is created or updated.

  2. Running set_transient() on an existing transient value will restart the clock. Per the Codex page on set_transient():

    If a transient exists, this function will update the transient’s expiration time.

  3. According to the Transients API page, the expiration time is the maximum lifetime of a transient value. It may be deleted before the time is up, but it will never return its value after the time is up:

    Transients may expire before the $expiration (Due to External Object Caches, or database upgrades) but will never return their value past $expiration.

Leave a Comment