2

假设我有一个 PHP 游戏,这是一个赚钱的游戏,每天市场上的物品价格都在变化。

我将如何使数据库中的价格每天自动更新?我是否会在服务器上安装一个程序来检测它何时已经过了 24 小时然后运行一个 PHP 文件来进行更新?或者 os 还有其他方式吗?

编辑:问题是伙计们,我实际上并不拥有我从托管公司租用的服务器,所以我真的无法访问命令行:s

谢谢,斯坦尼

4

10 回答 10

8

假设您在 Unix 系统上,您应该设置一个每日 cronjob。为此,请运行“crontab -e”并输入如下内容:

9 21 * * * /path/to/your/script

这将在每天 21:09 运行。

于 2009-03-29T18:34:32.003 回答
4

如果您无法访问命令行,您可以向网站添加 1x1 图像,该图像调用 php 脚本来检查是否需要更新某些内容。

就像是

<img style="width: 1px; height: 1px; visibility: hidden" src="cron.php">

在 cron.php 中,您检查数据是否需要更新。

于 2009-03-29T18:55:11.470 回答
4

由于您可能无法访问 cron 或者我要做的是检查每次有人加载页面时已经过去了多少时间。如果 24 小时过去了,那么调用你的更新函数。如果 48 小时过去了,请调用两次。如果没有人加载页面,那么更新函数是否被调用都没有关系,因为没有人在看;)

或者您可以在家中设置一台计算机,每 24 小时远程调用一次 update.php。您可以使用 cron 作业和 wget 来执行此操作,或者如果您使用的是 Windows,则可以使用任务调度程序。

我认为第一个选项效果最好。每次页面加载时调用您的更新函数,并且仅在 24 小时标记过去后更新。如果你写得正确,它是否在准确的 24 小时标记处更新并不重要。

于 2009-03-29T19:24:32.147 回答
3

您想设置一个“cron 作业”,或者一个以您设置的特定时间间隔运行的 PHP 文件。

查看这篇文章了解更多信息。

关于 cron 作业的最佳部分是,您不仅限于存储过程中可用的一小部分功能。你可以使用任何你喜欢的逻辑!:)

于 2009-03-29T18:35:43.780 回答
3

使用 webcron :) http://www.webcron.org/index.php?lang=en

或者这里有一个很好的列表: http ://www.onlinecronservices.com/

于 2009-03-29T19:41:45.400 回答
2

如果您有一个更新价格的脚本并且您只想每天运行它,请使用Cron (linux) 或at 命令(windows)。

于 2009-03-29T18:36:06.570 回答
1

我认为您可以创建一个在每次访问页面时都被调用的函数,并验证是否发生了更新,检查数据库。

所以在一个快速的伪代码中:

function verify_often(){
  if (last_update_in_db() != today() ){
    update_db();
    run_periodic_function(); 
  }
  return 0;
}

这种方法只需要经典的 PHP & MySQL 组合。

于 2009-03-29T19:11:07.000 回答
1

你怎么能不能“访问命令行”?我想不出任何不允许 ssh 访问的主机。访问 cron 是另一回事,但他们也应该允许这样做。如果他们不这样做 - 找到一个新的主机!

于 2009-03-29T19:25:40.803 回答
1

忘记这一切。没有理由做这样的事情。

您所要做的就是在每次有人调用该网页时进行检查。您跟踪日期,当当前日期不再与您的变量匹配时,您就会启动获取新数据的东西。砰!当然,这不是很好的可扩展性,但对于小型游戏来说很好。

于 2009-04-11T12:22:10.213 回答
0

我不知道如何回复亚历克斯的回答,但我想提一下他们所说的话。当他们说“每次有人加载页面时检查经过了多少时间”时,我觉得您不需要每次加载页面时都检查它。更好的方法是检查用户何时登录。如果在用户仍然登录的情况下超过 24 小时,那么对于所描述的场景而言,这将无关紧要。下次有人登录时,商品的价格会发生变化。

于 2010-08-28T22:29:27.447 回答