zoukankan      html  css  js  c++  java
  • 为php添加pcntl扩展,多线程

    前言:

    pcntl 介绍

    pcntl扩展可以支持 PHP 的多线程操作。(非Unix类系统不支持此模块)

    phpize 介绍

    phpize 可以用来给 PHP 动态的添加扩展。比如编译 PHP 时忘记添加某扩展,后来想添加该扩展,即可以使用 phpize 动态的添加该扩展。

    本文将介绍如何使用 phpize 给 Mac下的集成环境 MAMP 添加 PHP 的 pcntl 扩展。类 Unix 的环境都可以使用本方法安装,注意灵活变通。

    php添加pcntl扩展(Linux)
    php添加 pcntl 扩展

    pcntl扩展可以支持php的多线程操作(仅限linux)
    原本需要重新编译PHP的后面configrue提示加上--enable-pcnt

    由于我的php是采用yum安装的,所以不能采用上面的方式
    下面介绍一个php动态添加扩展的方式 phpize

    1、首先看下 phpize命令 所在的目录 (ps:我的目录/usr/bin/phpize)
    如果没有找到的话 执行安装

    yum install php53_devel (ps:请注意自己的版本)

    安装完毕后。会生成phpize命令  (也可以 whereis phpize 命令查看)

    2、去php.net下载相应版本的php源文件
    咱们以php-5.3.17 为例吧,解压后,进入相应的模块下
    cd ext/pcntl
    #先执行phpize
    /usr/bin/phpize

    ./configure --with-php-config=/usr/bin/php-config (ps:请正确的指定php-config的目录)


    #编译、安装

    make && make install

    这时候出了一个错误

    ./configure编译正常,但make出错
    error: ‘PHP_FE_END’ undeclared here (not in a function)

    解决方法:

    源代码有错误,进入php-5.3.17目录
    sed -i 's|PHP_FE_END|{NULL,NULL,NULL}|' ./ext/**/*.c
    sed -i 's|ZEND_MOD_END|{NULL,NULL,NULL}|' ./ext/**/*.c
    再重新make && make install

    3、编译完毕后会生成了一个 pcntl.so的文件。在php的model目录里

    编辑/etc/php.ini,加入

    extension=pcntl.so

    4、重启apache

    service httpd restart

    5、测试是否安装成功

    <?php
    echo pcntl_fork();
    ?>

    输出:23165

  • 相关阅读:
    Jersey Politics
    网络流——最小费用最大流
    网络流——最大流Dinic算法
    【洛谷2756】飞行员配对方案问题(二分图匹配,网络流24题)
    状压dp入门
    2018九江市赛
    [CQOI2007]余数求和
    CSAPC2008 skyline
    [ZJOI2009]函数 题解
    由不定方程想到的——数论选讲
  • 原文地址:https://www.cnblogs.com/fps2tao/p/8990325.html
Copyright © 2011-2022 走看看