PHP: отложенный запрос к базе данных также без активной страницы - PullRequest
1 голос
/ 31 августа 2010

Так, например, я нажимаю кнопку, которая будет отправлять что-то в базу данных через 1 минуту, но я хочу отправить это также if I leave the page :)

Так что, если я покину страницу, когда через 30 секунд осталось 1 минута, обратный отсчет продолжится, пока не достигнет 60 секунд, затем отправит данные в базу данных.

Надеюсь, это понятно. Я думаю, что я должен использовать для этого SESSION, но, пожалуйста, дайте мне знать, если вы знаете ответ, или что-нибудь полезное:)

пример: на http://www.travian.com/, когда вы начнете что-то строить, вы получите обратный отсчет "будет закончен в xx: xx: xx"; тем не менее вам не нужно держать браузер открытым - обратный отсчет по-прежнему запускается на сервере, даже если вы выходите из системы.

Или, скажем, пример из реальной жизни:

Представьте себе систему блогов, такую ​​как WordPress, где я пишу 10 сообщений в день, но я хочу показывать только пользователям 5/day.

Или я хочу показать пользователям в 8:00 A.M.

Или другой, взятый из travian:

Представьте себе game, где вы можете создавать войска, но для создания войск вам нужно подождать, потому что жизнь нелегка: D, поэтому for a troop вам нужно подождать 1 minutes.

Ответы [ 3 ]

1 голос
/ 31 августа 2010

Это невозможно. Пользователь может покинуть страницу из-за сбоя подключения к Интернету или из-за перебоя 1004 *, после чего он не может отправить информацию в базу данных. Что вы можете сделать, это немедленно сохранить данные в базе данных с отметкой времени «не открывать раньше», чтобы имитировать задержку в одну минуту, и добавить дополнительное ограничение для всех запросов к этой таблице: WHERE createDate < NOW()

1 голос
/ 31 августа 2010

Возможно, вы хотите использовать команду javascript для инициации задержки, потому что с Javascript вы можете отправлять данные в PHP через AJAX, и если вы инкапсулируете этот AJAX в функцию, а затем вызываете ее из своей функции «delay».

Для выхода из страницы вы также можете использовать:

window.onbeforeunload=delayFunction;

Надеюсь, это поможет.

0 голосов
/ 31 августа 2010

гарантия на это действие отсутствует.Я могу покинуть страницу с закрытием браузера тоже.Создание решения на основе базы данных - лучшее.

...