Sam
Sam

Reputation: 7048

After 30 seconds, update MYSQL database

I've been looking around here on SO and Googling, however I can't find anything that fits my description.

What I want to do is update the database if the page has not been refreshed after 30 seconds. I want to email a person with the contents of a form {submitted by a different user} (I can do that) IF the person has NOT visited the page (I can do that) within the last 30 seconds.

What I've tried to do is make the page that should be visited refresh every 30 seconds, and so I figured if I did something like after 31 seconds, edit the database (so if the refreshed page was not refreshed, the database editing would run).

I'm sorry if this sounds complicated, there's probably a better way to do this, but I'm not sure how.

The bigger picture is I'm trying to make a 'on-duty' sort of thing, so that if the person is not actively looking at the page, they will get emailed with whatever the contents of the form is. The page will contain a table of all the entered form results.

Upvotes: 1

Views: 1154

Answers (4)

nillls
nillls

Reputation: 623

I would suggest using javascript like this:
window.setTimeout("location.reload(true);", 3000);

This is of course if you desperately need to reload, but the user will obviously be mad that you reload the window for him.

Upvotes: 0

small_duck
small_duck

Reputation: 3096

You could update the database by creating a record with a timestamp every time the user refreshes the page. Then, you can have a PHP worker that looks regularely in the database if the timestamp is older than 30 seconds, and starts the e-mail.

Upvotes: 4

dzida
dzida

Reputation: 8981

I can't provide php solution for the server-side part of the job. But basically you need to set up javascript timer (eg. jquery timeout) and after 30seconds do the ajax call that will do what you want on the server (save something to db, send email and so on).

I hope I got your point and my advice will help you somehow.

Upvotes: 1

Lizard
Lizard

Reputation: 44992

maybe use an AJAX call every 30 secs based on the setTimeout javascript function?

http://www.w3schools.com/js/js_timing.asp

function timedCount()
{
    # ajax call
    t=setTimeout("timedCount()",30000);
}

Upvotes: 0

Related Questions