Swoole是有自己的一个进程管理模块,用来替代PHP的pcntl扩展,需要注意Process进程在系统是非常昂贵的资源,创建进程消耗很大,另外创建的进程过多会导致进程切换开销大幅上升
Swoole\Process::__construct(callable $function, $redirect_stdin_stdout = false, $create_pipe = true)
$function
,子进程创建成功后要执行的函数,底层会自动将函数保存到对象的callback属性上。如果希望更改执行的函数,可赋值新的函数到对象的callback属性
$redirect_stdin_stdout
,重定向子进程的标准输入和输出。启用此选项后,在子进程内输出内容将不是打印屏幕,而是写入到主进程管道。读取键盘输入将变为从管道中读取数据。默认为阻塞读取。
$create_pipe,是否创建管道,启用$redirect_stdin_stdout
后,此选项将忽略用户参数,强制为true。如果子进程内没有进程间通信,可以设置为 false。
<?php for ($i = 0; $i < 6; $i++) {#创建了3个子进程 $process = new Swoole\Process(function ($process) { echo PHP_EOL . posix_getpid() . PHP_EOL; }, false, false); $process->start(); } ?>
原文:https://www.cnblogs.com/zh718594493/p/12251630.html