Added full source code
This commit is contained in:
commit
33f8586698
1377 changed files with 123808 additions and 0 deletions
scripts
113
scripts/ticks.php
Normal file
113
scripts/ticks.php
Normal file
|
@ -0,0 +1,113 @@
|
|||
<?php
|
||||
|
||||
/********************************
|
||||
* LEGACY WORLDS - TICK MANAGER *
|
||||
********************************/
|
||||
|
||||
/* Checks for fork() */
|
||||
if (!(function_exists('pcntl_fork') || $__runFromAdmin)) {
|
||||
die("This script may not be called from the web server.\n");
|
||||
}
|
||||
|
||||
/* If we're running from an administration script, go to the appropriate directory */
|
||||
if ($__runFromAdmin) {
|
||||
$oldDir = getcwd();
|
||||
chdir(dirname(__FILE__));
|
||||
}
|
||||
|
||||
/* Load the required libraries */
|
||||
$__logPrefix = "lwTicks";
|
||||
$__loader = array(
|
||||
'log', 'classloader',
|
||||
'version', 'game', 'tick', 'config',
|
||||
'db_connection', 'db_accessor', 'db_copy', 'db',
|
||||
'pcheck', 'library', 'tick_manager',
|
||||
);
|
||||
require_once("loader.inc");
|
||||
|
||||
|
||||
if ($__runFromAdmin) {
|
||||
/* If we're being executed from an administration script,
|
||||
* we need to manually run a tick on a game.
|
||||
*/
|
||||
list($gName, $tName) = $__adminParams;
|
||||
l::setSyslogPrefix("lwControl");
|
||||
|
||||
function __adminFatalError($errno, $errorText, $information) {
|
||||
foreach ($information as $it) {
|
||||
$errorText .= "<br/>$it";
|
||||
}
|
||||
|
||||
$bt = debug_backtrace();
|
||||
array_shift($bt); // Remove this function
|
||||
array_shift($bt); // Remove eval in lib/log.inc
|
||||
|
||||
$errorText .= "<br/><u>Backtrace to the error:</u><pre>";
|
||||
$base = dirname(config::$main['scriptdir']);
|
||||
foreach ($bt as $data) {
|
||||
$str = "... " . str_repeat(' ', strlen($data['class']) > 30 ? 1 : (31 - strlen($data['class'])))
|
||||
. $data['class'] . " :: " . $data['function'];
|
||||
if (!is_null($data['file'])) {
|
||||
$str .= str_repeat(' ', strlen($data['function']) > 25 ? 1 : (26 - strlen($data['function'])));
|
||||
$fn = preg_replace("#^$base/#", "", $data['file']);
|
||||
$str .= " (line {$data['line']}, file '$fn')";
|
||||
}
|
||||
$errorText .= "$str\n";
|
||||
}
|
||||
$errorText .= "</pre>";
|
||||
|
||||
throw new Exception($errorText);
|
||||
}
|
||||
|
||||
l::setFatalHandler('__adminFatalError');
|
||||
try {
|
||||
dbConnect();
|
||||
|
||||
$game = config::getGame($gName);
|
||||
if (is_null($game)) {
|
||||
throw new Exception("Game '$gName' not found");
|
||||
}
|
||||
|
||||
l::notice("administration script executing tick {$gName}::{$tName}");
|
||||
$game->getDBAccess();
|
||||
$game->runTick($tName, true);
|
||||
l::notice("tick {$gName}::{$tName} executed");
|
||||
|
||||
dbClose();
|
||||
} catch (Exception $e) {
|
||||
$argh = $e->getMessage();
|
||||
}
|
||||
chdir($oldDir);
|
||||
return;
|
||||
} else {
|
||||
l::setSyslogPrefix("lwTicks");
|
||||
if (count($argv) > 1) {
|
||||
/* Checks for command line arguments */
|
||||
if ($argv[1] == "-r" && count($argv) == 4) {
|
||||
$game = $argv[2];
|
||||
$tick = $argv[3];
|
||||
|
||||
dbConnect();
|
||||
|
||||
$game = config::getGame($argv[2]);
|
||||
if (is_null($game)) {
|
||||
die("Error: game {$argv[2]} not found");
|
||||
}
|
||||
l::notice("manually executing {$argv[2]}::{$argv[3]}");
|
||||
$game->getDBAccess();
|
||||
$game->runTick($argv[3], true);
|
||||
l::notice("{$argv[2]}::{$argv[3]} executed");
|
||||
|
||||
dbClose();
|
||||
exit(0);
|
||||
} elseif ($argv[1] != "-d") {
|
||||
die("Syntax: {$argv[0]}\n\t -> to run as a daemon\n\t{$argv[0]} -d\n\t -> to run in debugging mode\n\t{$argv[0]} -r <game> <tick>\n\t -> to run a tick manually\n");
|
||||
}
|
||||
} else {
|
||||
/* Starts the main thread */
|
||||
new tick_manager($argv[1] == "-d");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
Reference in a new issue