/** * Checks the actual memory limit. * @return array * @static * @final */ public static final function ActualMemoryLimit() { if (FileSystem::FileDeletion() === false) { return false; } if (file_exists("{$_SERVER['DOCUMENT_ROOT']}/test_actual_memory.php")) { @unlink("{$_SERVER['DOCUMENT_ROOT']}/test_actual_memory.php"); } $file = @fopen("{$_SERVER['DOCUMENT_ROOT']}/test_actual_memory.php", 'wb'); @fputs($file, "<?php\n" . "if (function_exists('pcntl_fork') === false || function_exists('shm_attach') === false) {\n" . " exit();\n" . "}\n\n" . "\$shmId = shm_attach(ftok(__FILE__, 'A'));\n" . "\$pid = @pcntl_fork();\n\n" . "if (!\$pid) {\n" . " ini_set('display_errors', false);\n" . " error_reporting(-1);\n\n" . " \$memory = (int) '" . reset(Server::MemoryLimit()) . "';\n\n" . " for (\$i = 1; \$i <= \$memory * 2; \$i++) {\n" . " \$a[] = @str_repeat(chr(\$i), 1024 * 1024);\n" . " shm_put_var(\$shmId, 1, \$i);\n" . " }\n" . " exit();\n" . "}\n\n" . "\$actual = 0;\n" . "while (true) {\n" . " if (\$actual === @shm_get_var(\$shmId, 1)) {\n" . " shm_remove(\$shmId);\n" . " echo \$actual;\n" . " break;\n" . " } elseif (@shm_has_var(\$shmId, 1) && \$actual < @shm_get_var(\$shmId, 1)) {\n" . " \$actual = @shm_get_var(\$shmId, 1);\n" . " }\n" . " time_nanosleep(0, 250000000);\n" . "}\n" . '?>'); @fclose($file); @exec("php {$_SERVER['DOCUMENT_ROOT']}/test_actual_memory.php", $out); if (file_exists("{$_SERVER['DOCUMENT_ROOT']}/test_actual_memory.php")) { @unlink("{$_SERVER['DOCUMENT_ROOT']}/test_actual_memory.php"); } if (isset($out[0]) && $out[0] > 0) { return array('value' => reset($out), 'postfix' => 'Mb'); } else { return false; } }
$b->add('Posix', Server::Posix(), null, null, 'Checking posix.'); $b->add('Pcntl', Server::Pcntl(), null, null, 'Checking pcntl.'); $b->add('Email Sending', Server::EmailSending(), null, null, 'Checking Messages.'); $b->add('Mcrypt', Server::Mcrypt(), null, null, 'Checking mcrypt.'); $b->add('Sockets', Server::Sockets(), null, null, 'Checking sockets.'); $b->add('PHP Regex', Server::PHPRegex(), null, null, 'Checking php regex.'); $b->add('Perl Regex', Server::PerlRegex(), null, null, 'Checking perl regex.'); $b->add('Zlib', Server::Zlib(), null, null, 'Checking zlib.'); $b->add('GDlib', Server::GDlib(), null, null, 'Checking gdlib.'); $b->add('Free Type', Server::FreeType(), null, null, 'Checking free type.'); $b->add('Mbstring', Server::Mbstring(), null, null, 'Checking mbstring.'); $b->add('PDO', Server::PDO(), null, null, 'Checking PDO'); $b->add('SimpleXML', Server::SimpleXML(), null, null, 'Checking SimpleXML'); $b->add('DOMDocument', Server::DOMDocument(), null, null, 'Checking DOMDocument'); $b->add('Curl', Server::Curl(), null, null, 'Checking Curl'); $b->add('Memory Limit', Server::MemoryLimit(), null, null, 'Checking Memory Limit'); $b->add('Max Execution Time', Server::MaxExecutionTime(), null, null, 'Checking Max Execution Time'); $b->add('Umask', Server::Umask(), null, null, 'Finds and returns the umask.'); $b->add('Post Max Size', Server::PostMaxSize(), null, null, 'Finds and returns the post max size.'); $b->add('Register Globals', Server::RegisterGlobals(), null, null, 'Checking Register Globals.'); $b->add('Display Errors', Server::DisplayErrors(), null, null, 'Checking Display Errors.'); $b->add('PHP File Uploads', Server::PHPFileUploads(), null, null, 'Checking PHPFileUploads.'); $b->add('Server Time', Server::ServerTime(), null, null, 'Returns the current server time.'); $b->addHeader('High Load.'); $b->add('Actual Memory Limit', HighLoad::ActualMemoryLimit(), 128, '>', 'Checks the actual memory limit.'); $b->add('Number Cpu Operations', HighLoad::NumberCpuOperations(), null, null, 'Number of operations of the CPU.'); $b->add('Number File Operations', HighLoad::NumberFileOperations(), null, null, 'Number of file operations.'); $b->add('Actual Execution Time', HighLoad::ActualExecutionTime(50), null, null, 'Checks real-time execution of the script.'); $b->add('Sending Big Emails', HighLoad::SendingBigEmails(), null, null, 'Checking the sending big emails.'); $b->add('Uploads Big File', HighLoad::UploadsBigFile(1000), null, null, 'Checking upload big files to the server.'); $b->addHeader('Http server.');