假设我有一个 PHP 游戏,这是一个赚钱的游戏,每天市场上的物品价格都在变化。
我将如何使数据库中的价格每天自动更新?我是否会在服务器上安装一个程序来检测它何时已经过了 24 小时然后运行一个 PHP 文件来进行更新?或者 os 还有其他方式吗?
编辑:问题是伙计们,我实际上并不拥有我从托管公司租用的服务器,所以我真的无法访问命令行:s
谢谢,斯坦尼
假设我有一个 PHP 游戏,这是一个赚钱的游戏,每天市场上的物品价格都在变化。
我将如何使数据库中的价格每天自动更新?我是否会在服务器上安装一个程序来检测它何时已经过了 24 小时然后运行一个 PHP 文件来进行更新?或者 os 还有其他方式吗?
编辑:问题是伙计们,我实际上并不拥有我从托管公司租用的服务器,所以我真的无法访问命令行:s
谢谢,斯坦尼
假设您在 Unix 系统上,您应该设置一个每日 cronjob。为此,请运行“crontab -e”并输入如下内容:
9 21 * * * /path/to/your/script
这将在每天 21:09 运行。
如果您无法访问命令行,您可以向网站添加 1x1 图像,该图像调用 php 脚本来检查是否需要更新某些内容。
就像是
<img style="width: 1px; height: 1px; visibility: hidden" src="cron.php">
在 cron.php 中,您检查数据是否需要更新。
由于您可能无法访问 cron 或者我要做的是检查每次有人加载页面时已经过去了多少时间。如果 24 小时过去了,那么调用你的更新函数。如果 48 小时过去了,请调用两次。如果没有人加载页面,那么更新函数是否被调用都没有关系,因为没有人在看;)
或者您可以在家中设置一台计算机,每 24 小时远程调用一次 update.php。您可以使用 cron 作业和 wget 来执行此操作,或者如果您使用的是 Windows,则可以使用任务调度程序。
我认为第一个选项效果最好。每次页面加载时调用您的更新函数,并且仅在 24 小时标记过去后更新。如果你写得正确,它是否在准确的 24 小时标记处更新并不重要。
您想设置一个“cron 作业”,或者一个以您设置的特定时间间隔运行的 PHP 文件。
查看这篇文章了解更多信息。
关于 cron 作业的最佳部分是,您不仅限于存储过程中可用的一小部分功能。你可以使用任何你喜欢的逻辑!:)
使用 webcron :) http://www.webcron.org/index.php?lang=en
或者这里有一个很好的列表: http ://www.onlinecronservices.com/
我认为您可以创建一个在每次访问页面时都被调用的函数,并验证是否发生了更新,检查数据库。
所以在一个快速的伪代码中:
function verify_often(){
if (last_update_in_db() != today() ){
update_db();
run_periodic_function();
}
return 0;
}
这种方法只需要经典的 PHP & MySQL 组合。
你怎么能不能“访问命令行”?我想不出任何不允许 ssh 访问的主机。访问 cron 是另一回事,但他们也应该允许这样做。如果他们不这样做 - 找到一个新的主机!
忘记这一切。没有理由做这样的事情。
您所要做的就是在每次有人调用该网页时进行检查。您跟踪日期,当当前日期不再与您的变量匹配时,您就会启动获取新数据的东西。砰!当然,这不是很好的可扩展性,但对于小型游戏来说很好。
我不知道如何回复亚历克斯的回答,但我想提一下他们所说的话。当他们说“每次有人加载页面时检查经过了多少时间”时,我觉得您不需要每次加载页面时都检查它。更好的方法是检查用户何时登录。如果在用户仍然登录的情况下超过 24 小时,那么对于所描述的场景而言,这将无关紧要。下次有人登录时,商品的价格会发生变化。