parallel\Runtime::close

(0.8.0)

parallel\Runtime::close运行时优雅加入

描述

public parallel\Runtime::close(): void

请求运行时关闭。

注意:

计划执行的任务将在关闭发生之前执行。

异常

警告

如果 Runtime 已经关闭,则将抛出 parallel\Runtime\Error\Closed

添加说明

用户贡献说明 1 条说明

andre at webtechnik dot ch
3 年前
这是一个简单的测试,展示了 close 和 kill 的工作原理。

<?php
/**
* 测试 close 和 kill
* - 主线程写入 main.log
* - 第二个线程写入 thread.log 和 shutdown.log
* - 主线程运行 10 秒,第二个线程运行 20 秒
* - close 将等待第二个线程停止
* - kill 不等待,立即杀死第二个线程
*/

// 主线程
logToFile("start");

// 创建第二个线程
$thread = new parallel\Runtime();
$thread->run(function(){

// 线程关闭时要执行的操作
register_shutdown_function ( function(){file_put_contents("shutdown.log",date('Y-m-d H:i:s') . "\t last will");} );

// 循环并计数 20 秒
$c=0;
while (
$c++ < 20){
sleep(1);
echo
$c."|";
file_put_contents("thread.log",date('Y-m-d H:i:s') . "\t" . $c.PHP_EOL, FILE_APPEND);
}
});

// 睡眠 10 秒
sleep(10);

// 主线程立即杀死线程
//$thread->kill();

// 主线程等待线程
$thread->close();

logToFile("end");

function
logToFile($msg){
echo
PHP_EOL.$msg.PHP_EOL;
file_put_contents("main.log",date('Y-m-d H:i:s') . "\t" . $msg.PHP_EOL, FILE_APPEND);
}
?>
To Top