swoole和pcntl区别

发布时间 - 2019-12-12 00:00:00    点击率:

PHP的进程控制支持实现了Unix方式的进程创建, 程序执行, 信号处理以及进程的中断。 进程控制不能被应用在Web服务器环境,当其被用于Web服务环境时可能会带来意外的结果。                      (推荐学习: swoole视频教程)

PCNTL现在使用了ticks作为信号处理的回调机制,ticks在速度上远远超过了之前的处理机制。 这个变化与“用户ticks”遵循了相同的语义。

您可以使用declare() 语句在程序中指定允许发生回调的位置。这使得我们对异步事件处理的开销最小化。在编译PHP时 启用pcntl将始终承担这种开销,不论您的脚本中是否真正使用了pcntl。

有一个调整是PHP 4.3.0之前的所有pcntl脚本要使其工作,要么在期望允许回调的(代码)部分使用 declare() ,要么使用declare()新的全局语法 使其在整个脚本范围有效。

Note: 此扩展在 Windows 平台上不可用。

swoole增加了多进程管理模块来替代PHP的pcntl,它相比pcntl的不同点是:

swoole_process提供了pcntl没有的进程间通信swoole_process支持重定向标准输入和输出,在子进程内echo或者读键盘输入可以被重定向为从管道中取数据子进程可以异步化

进程间通信(IPC)

子进程和父进程之间可以通过管道通信,传递数据。IPC在多进程编程中经常用到,PHP的pcntl模块没有提供IPC的功能,所以功能有局限。而swoole_process提供了这些功能,并且封装了接口。只需调用接口即可完成进程间通信。

$worker_num = 8;
for($i = 0; $i < $worker_num; $i++)
{
    $process = new swoole_process('callback_function', $redirect_stdout);
    $pid = $process->start();
    $workers[$pid] = $process;
}
function callback_function(swoole_process $worker)
{
    //echo "Worker: start. PID=".$worker->pid."\n";
    //recv data from master
    $recv = $worker->read();
    echo "From Master: $recv\n";
    //send data to master
    $worker->write("hello master\n");
    sleep(2);
    $worker->exit(0);
}

read/write 2个方法就是向管道内读写数据。主进程内可以通过write/read 向子进程写入,读取数据。


# swoole  # php  # echo  # 封装  # 接口  # 事件  # 异步  # windows  # unix  # 回调  # 可以通过  # 信号处理  # 重定向  # 您的  # 只需  # 您可以  # 使其  # 用在  # 装了 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  JavaScript如何实现继承_有哪些常用方法  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  如何用AI帮你把自己的生活经历写成一个有趣的故事?  北京网站制作的公司有哪些,北京白云观官方网站?  IOS倒计时设置UIButton标题title的抖动问题  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  JavaScript Ajax实现异步通信  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  教学论文网站制作软件有哪些,写论文用什么软件 ?  如何在建站之星绑定自定义域名?  网站制作免费,什么网站能看正片电影?  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  html如何与html链接_实现多个HTML页面互相链接【互相】  大连网站制作公司哪家好一点,大连买房网站哪个好?  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  使用C语言编写圣诞表白程序  Laravel如何实现数据库事务?(DB Facade示例)  UC浏览器如何设置启动页 UC浏览器启动页设置方法  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  手机网站制作与建设方案,手机网站如何建设?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  如何确保西部建站助手FTP传输的安全性?  ,在苏州找工作,上哪个网站比较好?  Laravel如何使用Blade组件和插槽?(Component代码示例)  Laravel如何生成URL和重定向?(路由助手函数)  Laravel怎么在Blade中安全地输出原始HTML内容  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  想要更高端的建设网站,这些原则一定要坚持!  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  如何用y主机助手快速搭建网站?  南京网站制作费用,南京远驱官方网站?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  智能起名网站制作软件有哪些,制作logo的软件?  简单实现jsp分页  如何快速辨别茅台真假?关键步骤解析  海南网站制作公司有哪些,海口网是哪家的?  微信小程序 闭包写法详细介绍  香港服务器网站推广:SEO优化与外贸独立站搭建策略  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  Laravel如何与Pusher实现实时通信?(WebSocket示例)  图册素材网站设计制作软件,图册的导出方式有几种?