【发布时间】:2019-07-16 21:34:14
【问题描述】:
我有一个每天运行的小型 PHP Cron 作业,从 API 获取文件并将其保存到静态文件中。
file_put_contents("api.json", fopen("http://example.com/api", 'r'));
这个 JSON 的内容是这样的:
{
recipes: [
{
id: 30476,
title: "Selfmade Chicken Nuggets",
...
},
{...} ]
}
我的问题:我想创建一个“每日食谱”逻辑。
因此,我想每天创建一个包含食谱的额外数组。
在最好的情况下,我想要这样的东西:
第 1 步:创建一个包含所有食谱的“剩余食谱数组”
第 2 步:每天从剩余的食谱数组中获取 3 个食谱,并将它们放入某种“当日食谱”-数组中
第 3 步:如果剩余的食谱数组为空或没有 3 个元素,则从食谱中重新填充它
我的 Javascript 客户端中已经有了这个逻辑:
let fullRecipeList = await this.appData.getRecipeList();
let recipesOfTheDay = await this.appData.getItem("recipesOfTheDay");
let recipesOfTheDayValidUntil = await this.appData.getItem(
"recipesOfTheDayValidUntil"
);
let remainingRecipes = await this.appData.getItem("remainingRecipes");
if (!remainingRecipes || remainingRecipes.length < 3) {
remainingRecipes = this.shuffleArray(fullRecipeList);
}
if (
recipesOfTheDay &&
moment(recipesOfTheDayValidUntil).isSame(new Date(), "day")
) {
this.recipeList = recipesOfTheDay;
} else {
recipesOfTheDay = remainingRecipes.splice(0, 3);
this.recipeList = recipesOfTheDay;
await this.appData.setItem("remainingRecipes", remainingRecipes);
await this.appData.setItem("recipesOfTheDay", recipesOfTheDay);
await this.appData.setItem(
"recipesOfTheDayValidUntil",
moment().startOf("day")
);
}
是否可以在我的服务器端 cron 作业中创建这种逻辑?
代码会是什么样子?我对整个 PHP 世界都很陌生 :)
【问题讨论】:
-
是的,您可以使用相同的逻辑。你可以有两个文件,
recipesOfTheDay.json和remainingRecipes.json。 -
最好通过服务器端实际实现它,但我建议您考虑使用 SQLite 之类的存储,而不是使用
JSON文件。它更快、更高效。