本文整理汇总了PHP中pocketmine\Server::forceShutdown方法的典型用法代码示例。如果您正苦于以下问题:PHP Server::forceShutdown方法的具体用法?PHP Server::forceShutdown怎么用?PHP Server::forceShutdown使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pocketmine\Server
的用法示例。
在下文中一共展示了Server::forceShutdown方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: dumpServerMemory
public function dumpServerMemory($outputFolder, $maxNesting, $maxStringSize)
{
gc_disable();
if (!file_exists($outputFolder)) {
mkdir($outputFolder, 0777, true);
}
$this->server->getLogger()->notice("[Dump] After the memory dump is done, the server might crash");
$obData = fopen($outputFolder . "/objects.js", "wb+");
$staticProperties = [];
$data = [];
$objects = [];
$refCounts = [];
$this->continueDump($this->server, $data, $objects, $refCounts, 0, $maxNesting, $maxStringSize);
do {
$continue = false;
foreach ($objects as $hash => $object) {
if (!is_object($object)) {
continue;
}
$continue = true;
$className = get_class($object);
$objects[$hash] = true;
$reflection = new \ReflectionObject($object);
$info = ["information" => "{$hash}@{$className}", "properties" => []];
if ($reflection->getParentClass()) {
$info["parent"] = $reflection->getParentClass()->getName();
}
if (count($reflection->getInterfaceNames()) > 0) {
$info["implements"] = implode(", ", $reflection->getInterfaceNames());
}
foreach ($reflection->getProperties() as $property) {
if ($property->isStatic()) {
continue;
}
if (!$property->isPublic()) {
$property->setAccessible(true);
}
$this->continueDump($property->getValue($object), $info["properties"][$property->getName()], $objects, $refCounts, 0, $maxNesting, $maxStringSize);
}
fwrite($obData, "{$hash}@{$className}: " . json_encode($info, JSON_UNESCAPED_SLASHES) . "\n");
if (!isset($objects["staticProperties"][$className])) {
$staticProperties[$className] = [];
foreach ($reflection->getProperties() as $property) {
if (!$property->isStatic() or $property->getDeclaringClass()->getName() !== $className) {
continue;
}
if (!$property->isPublic()) {
$property->setAccessible(true);
}
$this->continueDump($property->getValue($object), $staticProperties[$className][$property->getName()], $objects, $refCounts, 0, $maxNesting, $maxStringSize);
}
}
}
echo "[Dump] Wrote " . count($objects) . " objects\n";
} while ($continue);
file_put_contents($outputFolder . "/staticProperties.js", json_encode($staticProperties, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT));
file_put_contents($outputFolder . "/serverEntry.js", json_encode($data, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT));
file_put_contents($outputFolder . "/referenceCounts.js", json_encode($refCounts, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT));
echo "[Dump] Finished!\n";
gc_enable();
$this->server->forceShutdown();
}