php - 稍后执行脚本

标签 php

对于我正在开发的个人游戏,我希望有一个 php 函数可以在一段时间内工作。

例如,现在的设置是,如果用户希望在游戏中购买士兵,他需要填写表单,提交后,用户的数据库条目会立即更新以反射(reflect)士兵的变化。

我想要的是在表单提交和士兵实际出现之间有一个时间延迟(以模拟训练时间等)。

我想到了一种可能的方法,但我希望这不是最好的方法。我可以创建一个新的数据库表“ Action ”,其中包含 Action 类型(即要执行的任务,在本例中是训练士兵)、参数(士兵数量)以及 Action 的开始/结束时间。每当用户加载页面时,页面都会检查是否已完成任何操作,如果完成则执行它们。

这样做的关键问题是操作仅在用户加载页面时执行。他可以购买士兵,然后让他们在他碰巧登录时才出现,这可能会让他在很长一段时间内处于脆弱状态。

我可以通过在任何人加载页面时检查所有用户的操作来解决此问题,但我相信这除了相当难以实现之外,还会对服务器造成不必要的负担。

有人有更好的想法吗?或者我的思路是最好的方法吗?谢谢!

最佳答案

您发明了作业队列,这是一个很好的步骤。您的解决方案的问题在于,每个客户端(对于每个请求)不断检查要执行的操作,这是很多不必要的工作。

最好有一个调度程序脚本在每一分钟/每小时/.. 内轮询该数据库,执行挂起的任务并删除已完成的条目。设置一个 cron 作业,以均匀的间隔调用该脚本。

关于php - 稍后执行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6852230/

相关文章:

PHP 表单仅提交来自 Gmail 的电子邮件而不提交其他地址

javascript - 如何从 cytoscape.js 中的 mysql 数据库中检索节点和元素?

php - 如何在 laravel 中使用 pangination 和 sortByDesc 功能?

php删除sql查询不起作用

php - 站点地图 PHP Mysql Split 45000

PHP 从存储在 mySQL DB 中的数组中获取元素

php - 使用 PHP、JS/jQuery 和一点 AJAX 的 CRUD 方法

php - MySQLi 未找到错误

php - 删除内连接

php - 使用 php 脚本备份 mysql 数据库表时出现问题