函数名称:Pool::shutdown()
适用版本:PHP 7.0.0及以上版本
函数说明:Pool::shutdown() 方法用于停止并销毁一个池对象。当调用此方法时,会等待所有正在执行的任务完成后再停止池,并释放所有资源。
用法示例:
<?php
class MyWorker extends Threaded {
public function run() {
// 在此处执行任务的代码
echo "执行任务" . PHP_EOL;
}
}
$pool = new Pool(4, MyWorker::class);
for ($i = 0; $i < 10; $i++) {
$pool->submit(new MyWorker());
}
// 等待所有任务执行完成
$pool->shutdown();
echo "所有任务执行完毕" . PHP_EOL;
?>
在上面的示例中,我们创建了一个名为MyWorker
的自定义线程类,该类继承自Threaded
。在run()
方法中,我们可以编写具体的任务逻辑。然后,我们创建了一个Pool
对象,指定了线程池的大小为4,并将MyWorker
类作为线程的类名。
接下来,我们使用一个循环提交10个任务到线程池中。最后,我们调用shutdown()
方法来停止并销毁线程池。在调用shutdown()
方法之后,会等待所有任务执行完成,然后输出"所有任务执行完毕"。
请注意,Pool
类和Threaded
类是PHP多线程扩展(pthreads
扩展)提供的功能,需要在PHP编译时启用--enable-pthreads
选项。此外,线程池和多线程在PHP中仍处于实验性阶段,建议在生产环境中谨慎使用。