如何在Web主机上设置PHP cron作业?

如何在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脚本,它从第三方动态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");
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访问完整服务器的“部分”。使用此选项,您可能需要自己进行一些小的管理。