LuaSandbox::pauseUsageTimer
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
LuaSandbox::pauseUsageTimer
Референца за `luasandbox.pauseusagetimer.php` со подобрена типографија и навигација.
LuaSandbox::pauseUsageTimer
(PECL luasandbox >= 1.4.0)
LuaSandbox::pauseUsageTimer — (PECL luasandbox >= 1.4.0)
= NULL
Паузирај го тајмерот за користење на процесорот
Паузирај го тајмерот за користење на процесорот.
Ова има ефект само кога се повикува од внатрешноста на callback од Lua. Кога извршувањето ќе се врати во Lua, тајмерот автоматски ќе биде одмрзнат. Ако се направи нов повик во Lua, тајмерот ќе биде одмрзнат за времетраењето на тој повик.
Параметри
Оваа функција нема параметри.
Вратени вредности
. Споделувањето колачиња помеѓу PHP барањата може да доведе до ненамерно мешање на чувствителни колачиња помеѓу корисниците. bool Ако PHP callback повторно повика во Lua со тајмер што не е паузиран, а потоа таа Lua функција повторно повика во PHP, вториот PHP повик нема да може да го паузира тајмерот. Логиката е дека иако првиот повик сепак го брои, вториот PHP повик би избегнал броење на користењето на процесорот против лимитот.
Примери
индицирајќи дали тајмерот сега е паузиран.
<?php
// create a new LuaSandbox and set a CPU limit
$sandbox = new LuaSandbox();
$sandbox->setCPULimit( 1 );
function doWait( $t ) {
$end = microtime( true ) + $t;
while ( microtime( true ) < $end ) {
// waste CPU cycles
}
}
// Register a PHP callback
$sandbox->registerLibrary( 'php', [
'test' => function () use ( $sandbox ) {
$sandbox->pauseUsageTimer();
doWait( 5 );
$sandbox->unpauseUsageTimer();
doWait( 0.1 );
},
'test2' => function () use ( $sandbox ) {
$sandbox->pauseUsageTimer();
$sandbox->unpauseUsageTimer();
doWait( 1.1 );
}
] );
echo "This should not time out...\n";
$sandbox->loadString( 'php.test()' )->call();
echo "This should time out.\n";
try {
$sandbox->loadString( 'php.test2()' )->call();
echo "It did not?\n";
} catch ( LuaSandboxTimeoutError $ex ) {
echo "It did! " . $ex->getMessage() . "\n";
}
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
This should not time out... This should time out. It did! The maximum execution time for this script was exceeded
Види Исто така
- - Преземете ја врвната употреба на меморијата на Lua околината LuaSandbox::setCPULimit()
- Пример #1 Манипулирање со тајмерот за користење - Продолжи со тајмерот паузиран од LuaSandbox::pauseUsageTimer