PHP 扩展:php-affinity

php中文网
发布: 2016-06-20 12:43:51
原创
1710人浏览过

Php-affinity 通过设置cpu亲和性,可以将进程绑定到一个cpu核心上。一般在如下场景我们可能会希望修改进程的cpu亲和性:

  •  频繁的并行运算

  •  线程可伸缩性测试(通过增加cpu核心数量模拟线性扩展)

  •  运行时间敏感的,决定性的进程

    立即学习PHP免费学习笔记(深入)”;

向nginx,swoole等开源软件,都提供了设置cpu亲和性的方法。nginx官方建议worker数量等同于cpu核心数量也是为了将一个进程绑定到一个cpu核心上,同时避免进程切换带来的开销。

Php本身并没有提供设置cpu亲和性的函数,我们可以通过两种方式实现:

  •  调用系统命令,修改当前进程cpu亲和性

  •  编写php扩展,封装系统调用。

php-affinity是使用c编写的php扩展,项目地址:https://github.com/huyanping/php-affinity

PHP多文件上传插件
PHP多文件上传插件

PHP多文件上传插件

PHP多文件上传插件 149
查看详情 PHP多文件上传插件
  /**                     * set CPU affinity                     *                     * @param $cpu_id                     * @return bool                     */                    functionsetaffinity($cpu_id){                        $num= getcpucores();                        if($cpu_id>= $num){                            returnfalse;                        }                        $set= system_call($cpu_id);                        if($set=== -1){                            returnfalse;                        }                                              returntrue;                    }                                          /**                     * get CPU affinity                     *                     * @return bool                     */                    functiongetaffinity(){                        $cpu_id= system_call();                        if($cpu_id=== -1){                            returnfalse;                        }                        return$cpu_id;                    }                                                                /**                     * get number of CPU                     *                     * @return bool                     */                    functiongetcpucores(){                        $nums= system_call();                        if($nums=== -1){                            returnfalse;                        }                        return$nums;                    }
登录后复制

提供了如下三个函数:

  • setaffinity – 设置cpu亲和性

  • getaffinity – 获取cpu亲和性

  • getcpucores – 获取cpu核心数量

  • API 如下:

    参考文献:

  • https://zh.wikipedia.org/wiki/%E5%A4%84%E7%90%86%E5%99%A8%E4%BA%B2%E5%92%8C%E6%80%A7

  • http://www.ibm.com/developerworks/cn/linux/l-affinity.html

  • http://www.cnblogs.com/LubinLew/p/cpu_affinity.html

  • 项目主页:http://www.open-open.com/lib/view/home/1448371981438

    PHP速学教程(入门到精通)
    PHP速学教程(入门到精通)

    PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载
    来源:php中文网
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    最新问题
    开源免费商场系统广告
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送
    PHP中文网APP
    随时随地碎片化学习

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号