Hi w_3rabi,
Thankyou for your reply. Actually I made an application that users(doesnt have sessionid or registration in site) just come to site and add the products to their list. I maintained a temporary table which contains the products lists. If the users selected the products and send mail to me then the temporary table will clear. otherwise the user just selected the products and didnt send the mail to me and close the window then the table doesnt clear....... so only i want to erase contents in table once the user closed the window.
i think the detail may be just brief.... sorry.
thanks...
Why not just delete the temporary table when the users session is deleted?
(or when session expires).
Or you could just have a query that would check for temporary tables that have expired, and run the query every time a new table is created.
eg:
[PHP]$sql = "SELECT id from temp_table_name where update < 'NOW() - 3600'";[/PHP]
or if you have a db based session:
[PHP]
$sql = "SELECT t.id as tableid from temp_table_name as t LEFT JOIN session_table_name AS s ON (s.id = t.sessionid) where s.expires < NOW()";
[/PHP]
You don't really need to use cron. If you're worried about server/db load, just cache the last "cleanup" time to a file. Then If the last cleanup time was over 1 hour or so, runt he "cleanup" query again.
One problem I can see with using the window onunload event is that it doesn't tie into a users session. A user may have multiple windows open. Then may have not meant to close the window, and they still want their list of products there.
An expiration time linked to the session is better.
The window.onunload event with a new XMLHTTPRequest call does work though if you're sure the user only has one window open, and the one window represents a session. (common with Web2.0 designs).