本文整理汇总了PHP中BuildLocations函数的典型用法代码示例。如果您正苦于以下问题:PHP BuildLocations函数的具体用法?PHP BuildLocations怎么用?PHP BuildLocations使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了BuildLocations函数的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: GetAllTesters
/**
* Load the location information and extract just the end nodes
*
*/
function GetAllTesters()
{
$locations = array();
$loc = LoadLocationsIni();
if (isset($_REQUEST['location'])) {
$location = $_REQUEST['location'];
$new = array('locations' => array('1' => 'group', 'default' => 'group'), 'group' => array('1' => $location, 'default' => $location, 'label' => 'placeholder'));
if (isset($loc[$_REQUEST['location']])) {
$new[$_REQUEST['location']] = $loc[$_REQUEST['location']];
}
$loc = $new;
}
BuildLocations($loc);
$i = 1;
while (isset($loc['locations'][$i])) {
$group =& $loc[$loc['locations'][$i]];
$j = 1;
while (isset($group[$j])) {
if (array_key_exists('relayServer', $loc[$group[$j]]) && strlen($loc[$group[$j]]['relayServer']) && array_key_exists('relayLocation', $loc[$group[$j]]) && strlen($loc[$group[$j]]['relayLocation'])) {
$locations[$loc[$group[$j]]['location']] = GetRemoteTesters($loc[$group[$j]]['relayServer'], $loc[$group[$j]]['relayLocation']);
} else {
$locations[$loc[$group[$j]]['location']] = GetTesters($loc[$group[$j]]['location']);
}
$j++;
}
$i++;
}
return $locations;
}
示例2: explode
if (isset($location['allowKeys'])) {
$keys = explode(',', $location['allowKeys']);
foreach ($keys as $k) {
if ($k == $filter) {
$ok = true;
break;
}
}
}
if (!$ok) {
unset($locations[$name]);
}
}
}
}
BuildLocations($locations);
// see if we are running a relay test
if (@strlen($req_rkey)) {
RelayTest();
} else {
// see if we're re-running an existing test
if (isset($test)) {
unset($test);
}
if (array_key_exists('resubmit', $_POST)) {
$test = GetTestInfo(trim($_POST['resubmit']));
if ($test) {
unset($test['completed']);
unset($test['started']);
unset($test['tester']);
unset($test['batch']);
示例3: LoadLocations
/**
* Load the location information and extract just the end nodes
*
*/
function LoadLocations()
{
$locations = array();
$loc = LoadLocationsIni();
if (isset($_REQUEST['k']) && preg_match('/^(?P<prefix>[0-9A-Za-z]+)(?P<key>[\\.0-9A-Za-z]*)$/', $_REQUEST['k'], $matches)) {
$filter = $matches['prefix'];
foreach ($loc as $name => $location) {
if (isset($location['browser'])) {
$ok = false;
if (isset($location['allowKeys'])) {
$keys = explode(',', $location['allowKeys']);
foreach ($keys as $k) {
if ($k == $filter) {
$ok = true;
break;
}
}
}
if (!$ok) {
unset($loc[$name]);
}
}
}
}
FilterLocations($loc);
BuildLocations($loc);
if (isset($loc['locations']['default'])) {
$default = $loc['locations']['default'];
} else {
$default = $loc['locations'][1];
}
$i = 1;
while (isset($loc['locations'][$i])) {
$group =& $loc[$loc['locations'][$i]];
if (!isset($group['hidden']) || !$group['hidden'] || $_REQUEST['hidden']) {
$label = $group['label'];
if (isset($group['default'])) {
$def = $group['default'];
} else {
$def = $group[1];
}
$j = 1;
while (isset($group[$j])) {
if (isset($loc[$group[$j]]['location'])) {
$loc_name = $loc[$group[$j]]['location'];
if (!isset($loc[$group[$j]]['hidden']) || !$loc[$group[$j]]['hidden'] || $_REQUEST['hidden']) {
if (isset($locations[$loc_name])) {
$locations[$loc_name]['Browsers'] .= ',' . $loc[$group[$j]]['browser'];
} else {
$locations[$loc_name] = array('Label' => $label, 'location' => $loc[$group[$j]]['location'], 'Browsers' => $loc[$group[$j]]['browser'], 'localDir' => $loc[$group[$j]]['localDir'], 'status' => @$loc[$group[$j]]['status'], 'relayServer' => @$loc[$group[$j]]['relayServer'], 'relayLocation' => @$loc[$group[$j]]['relayLocation'], 'labelShort' => $loc[$loc_name]['label']);
if ($default == $loc['locations'][$i] && $def == $group[$j]) {
$locations[$loc_name]['default'] = true;
}
if (isset($group['group'])) {
$locations[$loc_name]['group'] = $group['group'];
}
}
}
}
$j++;
}
}
$i++;
}
return $locations;
}
示例4: CheckLocations
/**
* For any locations that haven't connected in at least 2 hours, go through and delete any tests in the work queue
*
*/
function CheckLocations()
{
$locations = LoadLocationsIni();
BuildLocations($locations);
$deleted = false;
echo "\n";
for ($i = 1; array_key_exists($i, $locations['locations']); $i++) {
$group =& $locations[$locations['locations'][$i]];
for ($j = 1; array_key_exists($j, $group); $j++) {
if (!array_key_exists('relayServer', $loc[$group[$j]])) {
$name = $locations[$group[$j]]['location'];
$location = GetTesters($name);
$workdir = $locations[$name]['localDir'];
$elapsed = -1;
if (isset($location) && array_key_exists('elapsed', $location)) {
$elapsed = $location['elapsed'];
}
if ($elapsed < 0 || $elapsed > 120) {
if (strlen($workdir)) {
if (is_dir($workdir)) {
echo "{$elapsed} minutes : {$name} - {$workdir}\n";
delTree($workdir);
rmdir($workdir);
$deleted = true;
}
}
}
}
}
}
// nuke all of the queue files if we had to delete something
if ($deleted) {
$files = scandir('./tmp');
foreach ($files as $file) {
if (stripos($file, '.queue') !== false) {
unlink("./tmp/{$file}");
}
}
}
}
示例5: GetAllTesters
/**
* Load the location information and extract just the end nodes
*
*/
function GetAllTesters()
{
$locations = array();
$loc = LoadLocationsIni();
BuildLocations($loc);
$i = 1;
while (isset($loc['locations'][$i])) {
$group =& $loc[$loc['locations'][$i]];
$j = 1;
while (isset($group[$j])) {
if (array_key_exists('relayServer', $loc[$group[$j]]) && strlen($loc[$group[$j]]['relayServer']) && array_key_exists('relayLocation', $loc[$group[$j]]) && strlen($loc[$group[$j]]['relayLocation'])) {
$locations[$loc[$group[$j]]['location']] = GetRemoteTesters($loc[$group[$j]]['relayServer'], $loc[$group[$j]]['relayLocation']);
} else {
$locations[$loc[$group[$j]]['location']] = GetTesters($loc[$group[$j]]['location']);
}
$j++;
}
$i++;
}
return $locations;
}
示例6: LoadLocations
/**
* Load the location information and extract just the end nodes
*
*/
function LoadLocations()
{
$locations = array();
$loc = parse_ini_file('./settings/locations.ini', true);
FilterLocations($loc);
BuildLocations($loc);
if (isset($loc['locations']['default'])) {
$default = $loc['locations']['default'];
} else {
$default = $loc['locations'][1];
}
$i = 1;
while (isset($loc['locations'][$i])) {
$group =& $loc[$loc['locations'][$i]];
if (!array_key_exists('hidden', $group) || !$group['hidden'] || $_REQUEST['hidden']) {
$label = $group['label'];
if (isset($group['default'])) {
$def = $group['default'];
} else {
$def = $group[1];
}
$j = 1;
while (isset($group[$j])) {
if (array_key_exists($group[$j], $loc)) {
if (!array_key_exists('hidden', $loc[$group[$j]]) || !$loc[$group[$j]]['hidden'] || $_REQUEST['hidden']) {
$locations[$group[$j]] = array('Label' => $label, 'location' => $loc[$group[$j]]['location'], 'Browser' => $loc[$group[$j]]['browser'], 'localDir' => $loc[$group[$j]]['localDir'], 'relayServer' => @$loc[$group[$j]]['relayServer'], 'relayLocation' => @$loc[$group[$j]]['relayLocation']);
if ($default == $loc['locations'][$i] && $def == $group[$j]) {
$locations[$group[$j]]['default'] = true;
}
}
}
$j++;
}
}
$i++;
}
return $locations;
}
示例7: EC2_ScaleUp
function EC2_ScaleUp($location, $ec2Config)
{
$instancesNeeded = 0;
$file = @fopen("./ec2/testers.{$location}.dat", 'c+');
if ($file) {
if (flock($file, LOCK_EX)) {
$config = parse_ini_file('./settings/ec2.ini', true);
if (isset($config[$ec2Config])) {
// see how many tests are currently pending for the given location
$locations = parse_ini_file('./settings/locations.ini', true);
BuildLocations($locations);
if (strlen($locations[$location]['localDir'])) {
$files = glob($locations[$location]['localDir'] . '/*.*', GLOB_NOSORT);
$backlog = count($files);
$instances = json_decode(stream_get_contents($file), true);
if (!$instances) {
$instances = array();
}
$count = count($instances);
if ($backlog > 0 && !$count) {
$instancesNeeded = 1;
} else {
$ratio = $config[$ec2Config]['ratio'];
$max = $config[$ec2Config]['max'];
if ($ratio && $count < $max) {
$needed = (int) ($backlog / $ratio);
$needed = min($needed, $max);
$needed = max($needed, $count);
$instancesNeeded = $needed - $count;
}
}
}
}
if ($instancesNeeded) {
$price = trim($config[$ec2Config]['price']);
$ami = trim($config[$ec2Config]['ami']);
$region = trim($config[$ec2Config]['region']);
$size = 'm1.small';
if (strlen($config[$ec2Config]['size'])) {
$size = trim($config[$ec2Config]['size']);
}
$userData = trim($config[$ec2Config]['user_data']);
if (strlen($price) && strlen($ami) && strlen($region) && strlen($size) && strlen($userData)) {
require_once './ec2/sdk.class.php';
$ec2 = new AmazonEC2($config[$ec2Config]['key'], $config[$ec2Config]['secret']);
if ($ec2) {
$ec2->set_region($region);
$response = $ec2->request_spot_instances($price, array('InstanceCount' => (int) $instancesNeeded, 'Type' => 'one-time', 'LaunchSpecification' => array('ImageId' => $ami, 'InstanceType' => 'm1.small', 'UserData' => base64_encode($userData))));
if ($response->isOK()) {
// add empty instances to our list, the actual ID's will be filled in as they come online
// and checked periodically
for ($i = 0; $i < $instancesNeeded; $i++) {
$instances[] = array();
}
fseek($file, 0);
ftruncate($file, 0);
fwrite($file, json_encode($instances));
}
}
}
}
flock($file, LOCK_UN);
}
fclose($file);
}
}