如何在Web主机上设置PHP cron作业?
我一直在编写一个PHP脚本,它从第三方动态JSON文件中取出大量数据,并将压缩数据写入一个新的JSON文件。我对服务器和网络主机一无所知,直到今天我对PHP一无所知。这是PHP脚本:如何在Web主机上设置PHP cron作业?,php,json,cron,Php,Json,Cron,我一直在编写一个PHP脚本,它从第三方动态JSON文件中取出大量数据,并将压缩数据写入一个新的JSON文件。我对服务器和网络主机一无所知,直到今天我对PHP一无所知。这是PHP脚本: <?php // Retrieve data $curlSession = curl_init(); curl_setopt($curlSession, CURLOPT_URL, "http://eu.battle.net/api/wow/challenge/region?locale=en_GB"); c
<?php
// Retrieve data
$curlSession = curl_init();
curl_setopt($curlSession, CURLOPT_URL, "http://eu.battle.net/api/wow/challenge/region?locale=en_GB");
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, true);
$leaderboardsData = curl_exec($curlSession);
curl_close($curlSession);
$json_a = json_decode($leaderboardsData, true);
// Two categories that will be used in writing to a new JSON file
$topItems = array();
$subItems = array();
// Filter data and store the relevant information in the two categories
foreach($json_a[challenge] as $challenge)
{
$dungeon = $challenge[map][name];
echo $dungeon.' ';
foreach($challenge[groups] as $group)
{
$ranking = $group[ranking];
$time_passed = time() - strtotime($group[date]);
$hours_passed = floor($time_passed / 3600);
$minutes_passed = floor($time_passed / 60);
$members = '';
foreach($group[members] as $member)
{
$memberName = $member[character][name];
$memberGuild = $member[character][guild];
$memberRealm = $member[character][realm];
$member = $memberName.' <'.$memberGuild.'>, '.$memberRealm;
$members .= $member;
}
$timer = $group[time][minutes].':'.$group[time][seconds].'.'.$group[time][milliseconds];
if($hours_passed > 0)
{
$item = '#'.$ranking.' '.$dungeon.': '.$timer.' ('.$hours_passed.' hours ago)';
}
else
{
$item = '#'.$ranking.' '.$dungeon.': '.$timer.' ('.$minutes_passed.' minutes ago)';
}
if($minutes_passed > 0 and $hours_passed < 72)
{
array_push($topItems, $item);
array_push($subItems, $members);
}
}
}
echo count($subItems);
// Write to file
$json_array = array();
for($i = 0; $i < count($topItems); $i++)
{
$json_item = json_encode(array(
"topItem" => $topItems[$i],
"subItem" => $subItems[$i]));
array_push($json_array, $json_item);
}
$result = json_encode($json_array);
file_put_contents('./challenge.json', $result);
我读过一些关于cron作业是服务器上计划任务的工具的文章。我希望每隔几分钟运行一次上面的脚本,以使它写入的文件中的数据保持新鲜。我该怎么做?我很担心我最终会为网络主机付费,而无法正确使用它
有谁能为我推荐一个好的托管服务,并向我解释我是如何在那里设置cron作业的
编辑:我设法让我的脚本在一个免费的共享主机上运行,但由于我试图从暴雪娱乐检索数据,我的IP显然被列入黑名单,所以我只收到空数据。如果我得到了带有cron工作支持的VPS,我的问题会得到解决吗?该服务器必须能够通过我相关的Android应用程序,每天多次处理几十个人请求一个大约5MB大小的.JSON文件的请求。我应该考虑什么样的预算?我不想过度使用我不需要的实用程序(例如,我不需要同时托管网站或其他服务)。你进入你的管理面板(cPanel、Plesk等)并在那里添加cron。大多数网络托管公司允许您每隔几分钟创建一次cronjobs。无论如何,先和他们谈谈。我们不能在这里推荐主机,不-这太主观了,取决于一系列变量(你在哪里,你在做什么,你的价格预期,正常运行时间要求…)。您是在寻找共享主机还是VPS主机?共享是最简单和最便宜的,但有时会根据你想做的事情而限制你。如今VPS可能非常便宜,但它让您可以通过root访问完整服务器的“部分”。使用此选项,您可能需要自己进行一些小的管理。