如何在webhost上设置PHP cron作业?

时间:2014-05-09 10:53:12

标签: 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");
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);

&GT?;

我读到有关cron作业是服务器上计划任务的工具的一些内容。我想每隔几分钟运行上面的脚本,以便将数据保存在它写入的文件中。我该怎么办呢?我非常担心我最终会为虚拟主机付费并且无法正确使用它。

任何人都可以向我推荐这种东西的好主机服务,并向我解释我如何在那里设立一个cron工作?

编辑:我设法让我的脚本在免费共享主机上运行,​​但由于我正在尝试从暴雪娱乐中检索数据,我的IP显然被列入黑名单,因此我只收到空数据。如果我通过cron工作支持获得VPS,我的问题会得到解决吗?服务器必须能够通过我的相关Android应用程序处理几十个人,每天多次请求大小约为5MB的.JSON文件。我应该考虑什么样的预算?我不想得到一个我不需要的实用工具(例如,我不需要也托管网站或其他服务)。

0 个答案:

没有答案