本文整理汇总了PHP中Util::out方法的典型用法代码示例。如果您正苦于以下问题:PHP Util::out方法的具体用法?PHP Util::out怎么用?PHP Util::out使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Util
的用法示例。
在下文中一共展示了Util::out方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: doFetch
function doFetch($type, $id)
{
global $redis, $debug;
$key = "zkb:zkbFeed:{$type}:{$id}";
$fetched = $redis->get($key);
if ($fetched == true) {
return;
}
if ($debug) {
Util::out("Fetching {$type} {$id}");
}
$lastFetchedID = (int) $redis->get("zkb:lastFetchedID:{$type}:{$id}");
do {
$url = "https://zkillboard.com/api/{$type}ID/{$id}/orderDirection/asc/afterKillID/{$lastFetchedID}/no-items/no-attackers/";
$raw = Util::getData($url);
$json = json_decode($raw, true);
foreach ($json as $kill) {
$killID = (int) $kill['killID'];
$hash = $kill['zkb']['hash'];
$lastFetchedID = max($lastFetchedID, $killID);
saveKill($killID, $hash);
}
$newKills = sizeof($json);
} while ($newKills > 0);
$redis->set("zkb:lastFetchedID:{$type}:{$id}", $lastFetchedID);
$redis->setex($key, 3601, true);
}
示例2: getCSV
function getCSV($url, $method)
{
global $mdb, $redis;
$file = $redis->get("RC:{$url}");
if ($file == null) {
$file = file_get_contents($url);
$redis->setex("RC:{$url}", 900, $file);
}
$csv = bzdecompress($file);
Util::out("Parsing {$url}");
parseCSV($csv, $method);
}
示例3: calcStats
function calcStats($row)
{
global $mdb, $debug;
$type = $row['type'];
$id = $row['id'];
$newSequence = $row['sequence'];
$key = ['type' => $type, 'id' => $id];
$stats = $mdb->findDoc('statistics', $key);
if ($stats === null) {
$stats = [];
$stats['type'] = $type;
$stats['id'] = $id;
}
$oldSequence = (int) @$stats['sequence'];
if ($newSequence <= $oldSequence) {
return;
}
for ($i = 0; $i <= 1; ++$i) {
$isVictim = $i == 0;
if (($type == 'locationID' || $type == 'regionID' || $type == 'solarSystemID') && $isVictim == true) {
continue;
}
// build the query
$query = [$row['type'] => $row['id'], 'isVictim' => $isVictim];
$query = MongoFilter::buildQuery($query);
// set the proper sequence values
$query = ['$and' => [['sequence' => ['$gt' => $oldSequence]], ['sequence' => ['$lte' => $newSequence]], $query]];
$allTime = $mdb->group('killmails', [], $query, 'killID', ['zkb.points', 'zkb.totalValue']);
mergeAllTime($stats, $allTime, $isVictim);
$groups = $mdb->group('killmails', 'vGroupID', $query, 'killID', ['zkb.points', 'zkb.totalValue'], ['vGroupID' => 1]);
mergeGroups($stats, $groups, $isVictim);
$months = $mdb->group('killmails', ['year' => 'dttm', 'month' => 'dttm'], $query, 'killID', ['zkb.points', 'zkb.totalValue'], ['year' => 1, 'month' => 1]);
mergeMonths($stats, $months, $isVictim);
}
// Update the sequence
$stats['sequence'] = $newSequence;
// save it
$mdb->getCollection('statistics')->save($stats);
$r = $mdb->getDb()->command(['getLastError' => 1]);
if ($r['ok'] != 1) {
die('stats update failure');
}
if ($debug) {
Util::out("Stats completed for: {$type} {$id} {$newSequence}");
}
}
示例4: createInvolved
function createInvolved($data)
{
global $mdb;
$dataArray = array('character', 'corporation', 'alliance', 'faction', 'shipType');
$array = array();
foreach ($dataArray as $index) {
if (isset($data[$index]['id']) && $data[$index]['id'] != 0) {
$array["{$index}ID"] = (int) $data[$index]['id'];
}
}
if (isset($array['shipTypeID']) && Info::getGroupID($array['shipTypeID']) == -1) {
$mdb->getCollection('information')->update(['type' => 'group'], ['$set' => ['lastCrestUpdate' => new MongoDate(1)]]);
Util::out('Bailing on processing a kill, unable to find groupID for ' . $array['shipTypeID']);
exit;
}
if (isset($array['shipTypeID'])) {
$array['groupID'] = (int) Info::getGroupID($array['shipTypeID']);
}
if (isset($data['finalBlow']) && $data['finalBlow'] == true) {
$array['finalBlow'] = true;
}
return $array;
}
示例5: foreach
$name = $group['name'];
$exists = $mdb->count('information', ['type' => 'groupID', 'id' => $groupID]);
if ($exists == 0) {
++$newGroups;
}
$mdb->insertUpdate('information', ['type' => 'groupID', 'id' => $groupID], ['name' => $name, 'lastCrestUpdate' => $mdb->now(-86400)]);
$types = CrestTools::getJSON($href);
if (@$types['types'] != null) {
foreach ($types['types'] as $type) {
$typeID = (int) getTypeID($type['href']);
$name = $type['name'];
$exists = $mdb->count('information', ['type' => 'typeID', 'id' => $typeID]);
if ($exists > 0) {
continue;
}
Util::out("Discovered item: {$name}");
++$newItems;
$mdb->insertUpdate('information', ['type' => 'typeID', 'id' => $typeID], ['name' => $name, 'groupID' => $groupID, 'lastCrestUpdate' => new MongoDate(1)]);
}
}
}
$next = @$groups['next']['href'];
if ($next != null) {
$groups = CrestTools::getJSON($next);
}
} while ($next != null);
$mdb->insertUpdate('storage', ['locker' => 'groupsPopulated'], ['contents' => true]);
if ($newGroups > 0) {
Log::irc("Added {$newGroups} new groupIDs");
}
if ($newItems > 0) {
示例6: array
continue;
}
$killID = @$killmail['killID'];
if ($killID != 0) {
$crestmail['processed'] = true;
$crestmails->save($crestmail);
$queueProcess->push($killID);
++$counter;
$queueShare->push($killID);
} else {
$crestmails->update($crestmail, array('$set' => array('processed' => null)));
}
}
}
if ($debug && $counter > 0) {
Util::out('Added ' . number_format($counter, 0) . ' Kills.');
}
function validKill(&$kill)
{
// Show all pod kills
$victimShipID = $kill['victim']['shipType']['id'];
if ($victimShipID == 670 || $victimShipID == 33328) {
return true;
}
$npcOnly = true;
foreach ($kill['attackers'] as $attacker) {
if (isset($attacker['shipType']['id'])) {
$attackerGroupID = Info::getGroupID($attacker['shipType']['id']);
if ($attackerGroupID == 365) {
return true;
}
示例7: file_get_contents
<?php
require_once "../init.php";
$raw = file_get_contents("{$baseDir}/setup/items.json");
$json = json_decode($raw, true);
foreach ($json as $row) {
$doc = $mdb->find("information", ['type' => 'typeID', 'id' => (int) $row['typeID']]);
if ($doc === null || is_array($doc) && sizeof($doc) == 0) {
Util::out("Adding " . $row['name']);
$row['id'] = $row['typeID'];
unset($row['typeID']);
$row['type'] = 'typeID';
$mdb->save("information", $row);
}
$row = null;
}
$redis->set("tq:itemsPopulated", true);
示例8: foreach
<?php
require_once '../init.php';
if (date('Hi') != '0001') {
exit;
}
$types = ['allianceID', 'corporationID', 'factionID', 'shipTypeID', 'groupID', 'solarSystemID', 'regionID'];
foreach ($types as $type) {
Util::out($type);
$entities = $mdb->find('statistics', ['type' => $type]);
foreach ($entities as $row) {
calcTop($row);
}
}
function calcTop($row)
{
global $mdb;
if (date('d') != '01' && isset($row['topAllTime'])) {
return;
}
$parameters = [$row['type'] => $row['id']];
$parameters['limit'] = 10;
$parameters['kills'] = true;
$topLists[] = array('type' => 'character', 'data' => Stats::getTop('characterID', $parameters));
$topLists[] = array('type' => 'corporation', 'data' => Stats::getTop('corporationID', $parameters, true));
$topLists[] = array('type' => 'alliance', 'data' => Stats::getTop('allianceID', $parameters, true));
$topLists[] = array('type' => 'faction', 'data' => Stats::getTop('factionID', $parameters, true));
$topLists[] = array('type' => 'ship', 'data' => Stats::getTop('shipTypeID', $parameters, true));
$topLists[] = array('type' => 'system', 'data' => Stats::getTop('solarSystemID', $parameters, true));
do {
$r = $mdb->set('statistics', $row, ['topAllTime' => $topLists]);
示例9: floor
// Don't fetch killmail api for wars with no kill count change
if ($prevKills != $currKills) {
$kmHref = $war['killmails'];
$page = floor($mdb->count('warmails', ['warID' => $id]) / 2000);
if ($page == 0) {
$page = 1;
} elseif ($page > 1) {
$kmHref .= "?page={$page}";
}
while ($kmHref != null) {
$killmails = CrestTools::getJSON($kmHref);
foreach ($killmails['items'] as $kill) {
$href = $kill['href'];
$exploded = explode('/', $href);
$killID = (int) $exploded[4];
$hash = $exploded[5];
$mdb->insertUpdate('warmails', ['warID' => $id, 'killID' => $killID]);
if (!$mdb->exists('crestmails', ['killID' => $killID, 'hash' => $hash])) {
$mdb->insert('crestmails', ['killID' => (int) $killID, 'hash' => $hash], ['processed' => false]);
Util::out("New WARmail {$killID}");
}
}
$next = @$killmails['next']['href'];
if ($next != $kmHref) {
$kmHref = $next;
} else {
$kmHref = null;
}
}
}
}
示例10: Stomp
$stomp = new Stomp($stompServer, $stompUser, $stompPassword);
} catch (Exception $ex) {
Util::out("Stomp error: " . $ex->getMessage());
exit;
}
$stomp->setReadTimeout(1);
foreach ($topics as $topic) {
$stomp->subscribe($topic, array('id' => 'zkb-' . $baseAddr, 'persistent' => 'true', 'ack' => 'client', 'prefetch-count' => 1));
}
$stompCount = 0;
$timer = new Timer();
while ($timer->stop() <= 59000) {
$frame = $stomp->readFrame();
if (!empty($frame)) {
$killdata = json_decode($frame->body, true);
$killID = (int) $killdata['killID'];
if ($killID == 0) {
continue;
}
$hash = $hash = Killmail::getCrestHash($killID, $killdata);
$killdata['killID'] = (int) $killID;
if (!$mdb->exists('crestmails', ['killID' => $killID, 'hash' => $hash])) {
++$stompCount;
$i = $mdb->getCollection('crestmails')->insert(['killID' => $killID, 'hash' => $hash, 'processed' => false, 'source' => 'stomp', 'added' => $mdb->now()]);
}
$stomp->ack($frame->headers['message-id']);
}
}
if ($stompCount > 0) {
Util::out("New kills from STOMP: {$stompCount}");
}
示例11: foreach
<?php
require_once "../init.php";
if ($redis->get("tq:itemsPopulated") != true) {
Util::out("Waiting for items to be populated...");
exit;
}
if (date('i') != 45) {
exit;
}
$assign = ['capacity', 'name', 'portionSize', 'mass', 'volume', 'description', 'radius', 'published'];
$rows = $mdb->find("information", ['type' => 'typeID']);
foreach ($rows as $row) {
$typeID = (int) $row['id'];
$lastCrestUpdate = @$row['lastCrestUpdate'];
if ($lastCrestUpdate != null && $lastCrestUpdate->sec > time() - 86400) {
continue;
}
$crest = CrestTools::getJSON("https://public-crest.eveonline.com/types/{$typeID}/");
foreach ($assign as $key) {
if (isset($crest[$key])) {
$row[$key] = $crest[$key];
}
}
$row['lastCrestUpdate'] = $mdb->now();
$mdb->save("information", $row);
}
示例12: foreach
if ($rank !== false) {
$rank = 1 + $rank;
$mdb->set("statistics", $row, ['recentOverallRank' => $rank]);
$redis->hSet("tq:ranks:{$type}:recent:{$today}", $rank, $id);
}
}
$keys = $redis->keys("tq:ranks:recent:*");
foreach ($keys as $key) {
$redis->del($key);
}
$keys = $redis->keys("tq:ranks:*:recent:*");
foreach ($keys as $key) {
$redis->expire($key, 14 * 86400);
}
$redis->setex($todaysKey, 87000, true);
Util::out("Recent rankings complete");
function getValue(&$array, $index)
{
$index = ucwords($index);
$value = @$array["recent{$index}"];
return $value;
}
function getRecent($type, $id, $isVictim, $ninetyDayKillID)
{
global $mdb;
// build the query
$query = [$type => $id, 'isVictim' => $isVictim];
$query = MongoFilter::buildQuery($query);
// set the proper sequence values
$query = ['$and' => [['killID' => ['$gte' => $ninetyDayKillID]], $query]];
$result = $mdb->group('killmails', [], $query, 'killID', ['zkb.points', 'zkb.totalValue']);
示例13: moveAndExpire
moveAndExpire($multi, $today, "tq:ranks:weekly:{$type}:{$today}:shipsDestroyed");
moveAndExpire($multi, $today, "tq:ranks:weekly:{$type}:{$today}:shipsLost");
moveAndExpire($multi, $today, "tq:ranks:weekly:{$type}:{$today}:iskDestroyed");
moveAndExpire($multi, $today, "tq:ranks:weekly:{$type}:{$today}:iskLost");
moveAndExpire($multi, $today, "tq:ranks:weekly:{$type}:{$today}:pointsDestroyed");
moveAndExpire($multi, $today, "tq:ranks:weekly:{$type}:{$today}:pointsLost");
$multi->exec();
}
function moveAndExpire(&$multi, $today, $key)
{
$newKey = str_replace(":{$today}", "", $key);
$multi->rename($key, $newKey);
$multi->expire($newKey, 3600);
}
$redis->setex($todaysKey, 9000, true);
Util::out("Weekly rankings complete");
function zAdd(&$multi, $key, $value, $id)
{
$value = max(1, (int) $value);
$multi->zAdd($key, $value, $id);
$multi->expire($key, 9000);
}
function rankCheck($max, $rank)
{
return $rank === false ? $max : $rank + 1;
}
function getWeekly($type, $id, $isVictim, $ninetyDayKillID)
{
global $mdb;
// build the query
$query = [$type => $id, 'isVictim' => $isVictim];
示例14: catch
} catch (MongoDuplicateKeyException $ex) {
// ignore it *sigh*
}
}
if (!$exists && $debug) {
Util::out("Added {$killID} from API");
}
}
// helpful info for output if needed
$info = $mdb->findDoc('information', ['type' => 'characterID', 'id' => $charID], [], ['name' => 1, 'corporationID' => 1]);
$corpInfo = $mdb->findDoc('information', ['type' => 'corporationID', 'id' => @$info['corporationID']], [], ['name' => 1]);
$apiVerifiedSet = new RedisTtlSortedSet('ttlss:apiVerified', 86400);
$apiVerifiedSet->add(time(), $type == 'Corporation' ? @$info['corporationID'] : $charID);
if ($newMaxKillID == 0) {
$tqApiChars->setTime($row, time() + rand(72000, 86400));
}
// If we got new kills tell the log about it
if ($killsAdded > 0) {
if ($type == 'Corporation') {
$name = 'corp ' . @$corpInfo['name'];
} else {
$name = 'char ' . @$info['name'];
}
while (strlen("{$killsAdded}") < 3) {
$killsAdded = ' ' . $killsAdded;
}
Util::out("{$killsAdded} kills added by {$name}");
}
}
sleep(1);
}
示例15: updateEntity
function updateEntity($killID, $entity)
{
global $information, $mdb, $debug;
$types = ['character', 'corporation', 'alliance', 'faction'];
for ($index = 0; $index < 4; ++$index) {
$type = $types[$index];
if (!isset($entity[$type]['id'])) {
continue;
}
$id = $entity[$type]['id'];
$name = $entity[$type]['name'];
// Look for the current entry
$query = ['type' => $type . 'ID', 'id' => $id, 'killID' => ['$gte' => $killID]];
if ($mdb->exists('information', $query)) {
continue;
}
unset($query['killID']);
$row = $mdb->findDoc('information', $query);
$new = $row == null;
if (!isset($row['killID'])) {
$row['killID'] = 0;
}
if ($row != null && $killID <= $row['killID']) {
echo "continuing..\n";
}
if ($row != null && $killID <= $row['killID']) {
continue;
}
$updates = [];
$updates['name'] = $name;
$updates['killID'] = $killID;
for ($subIndex = $index + 1; $subIndex < 4; ++$subIndex) {
$subType = $types[$subIndex];
$updates["{$subType}ID"] = (int) @$entity[$subType]['id'];
}
$mdb->insertUpdate('information', $query, $updates);
if ($new && $debug) {
Util::out("Added {$type}: {$name}");
}
}
}