PHP:延迟数据库请求也没有实时页面

发布于 2024-09-17 01:21:26 字数 710 浏览 13 评论 0原文

例如,我单击一个按钮,1 分钟后将向数据库发送一些内容,但我也想在 如果我离开页面 时发送它:)

因此,如果我在 30 秒后离开页面这1分钟会持续倒计时,直到达到60秒,然后将数据发送到数据库。

希望它是清楚的。我认为我应该用于此 SESSION,但如果您知道答案或任何有用的信息,请告诉我:)

示例:在 http://www.travian.com/,当你开始构建某些东西时,你会得到一个倒计时“将在 xx:xx:xx 完成”;但您无需保持浏览器打开 - 即使您注销,倒计时仍会在服务器上运行。

或者让我们举一个现实生活中的例子:

想象一个像 WordPress 这样的博客系统,我每天写 10 篇文章,但我只想向用户展示 5/日

或者我想在上午 8:00 AM

或者从 travian 获取的另一个内容:

想象一个游戏,您可以在其中创建部队,但是要创建部队,您需要等待,因为生活并不容易:D,因此对于一支部队,您需要等待1 分钟

So for example I click a button what will send something to the database after 1 minutes, but I want to send it also if I leave the page :)

So if I leave the page when 30 seconds left from the 1 minutes the countdown will continue until reaches 60 seconds, then sends the data to the database.

Hope it's clear. I think that I should use for this SESSION's but please let me know if you know the answer, or anything helpful :)

example: on http://www.travian.com/, when when you start building something, you get a countdown "will be finished in xx:xx:xx"; yet you don't need to keep the browser open - the countdown still runs on the server, even if you log out.

Or lets say a real life example:

Imagine a blogging system like wordpress, where I write 10 posts a day but I want to show for the users only 5/day.

Or I want to show to users at 8:00 A.M.

Or another one taken from travian:

Imagine a game where you can create troops, but to create troops you need to wait because life's not easy :D, so for a troop you need to wait 1 minutes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

水晶透心 2024-09-24 01:21:26

这是不可能的。用户可能会因为互联网连接失败断电而离开页面,此时他们无法将信息发送到数据库。

您可以做的就是立即将数据存储在数据库中,并使用“在此之前不打开”时间戳来模拟一分钟的延迟,并向针对该表的所有请求添加附加约束:

WHERE createDate < NOW()

This is impossible. The user might leave the page because their internet connection failed or because there's a power outage, at which point there's no way to have them send the information to the database.

What you can do is store the data in the database immediately, with a "do not open before" timestamp to simulate a one-minute delay, and add the additional constraint to all requests against that table:

WHERE createDate < NOW()
贱贱哒 2024-09-24 01:21:26

也许您想使用 javascript 命令来启动延迟,因为使用 Javascript,您可以通过 AJAX 向 PHP 发送数据,并且如果您将此 AJAX 封装在一个函数中,然后从您的“延迟”函数中调用它。

对于离开的页面,您还可以使用:

window.onbeforeunload=delayFunction;

希望这有帮助。

Perhaps you want to use a javascript command to initiate the delay, because with Javascript you can send data to PHP via AJAX, and if you encapsulate this AJAX in a function and then call this from your "delay" function.

For the page leaving you could also use:

window.onbeforeunload=delayFunction;

Hope this helps.

氛圍 2024-09-24 01:21:26

对此行动没有任何保证。我也可以在关闭浏览器的情况下离开页面。构建数据库驱动的解决方案是最好的。

there is no guarantee for this action. I can leave page with closing browser too. Building database-driven solution is the best.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文