zoukankan      html  css  js  c++  java
  • 添加php拓展(以phppcntl及phpredis及phppcntl为例)

      我们都知道php是单进程的,虽然swoole支持多进程,但我没接触过(这个以后肯定要学习)。但是php添加一个php-pcntl拓展也可以实现多进程处理一个事务。

      下面是一个简单的例子:

     1         $pids = array();
     2         foreach ($result as $k => $v) {
     3             $pids[$k] = pcntl_fork(); //起一个子进程
     4             switch ($pids[$k]) {
     5                 case -1:
     6                     echo "fork error : \r\n";//进程创建失败
     7                     exit;
     8                 case 0:
     9                     match($city, $table_name, $v);//进程创建成功 进行逻辑处理
    10                     exit;
    11                 default:
    12                     break;
    13             }
    14         }
    15         foreach ($pids as $i => $pid) {
    16             if ($pid) {
    17                 pcntl_waitpid($pid, $status);//监督子进程状态,并回收僵尸进程
    18             }
    19         }    

      附:

      php-pcntl文档地址:http://php.net/manual/zh/book.pcntl.php

      当然本文的重点是编译安装拓展

      一、安装php-pcntl拓展

      我装的是php7,恰好我的php源码ext子目录下有pcntl 所以省去了下载的一步(如果没有请百度下载);

      第一步,切到pcntl目录下

      

    1 cd /home/***/php-7.2.3/ext/pcntl

      第二步,调用phpize命令生成./configure 文件

    1 find / -name phpize
    //查看phpize的位置
    1 /usr/local/php/bin/phpize  //调用生成 ./configure 

      第三步, 调用./configure

    1  find / -name php-config //查找php-config
    1 ./configure --with-php-config=/usr/local/php/bin/php-config //取决于你安装php之后php-config文件的位置

      第四步,make && make install编译安装(注:一定要分开操作,make的时候有时会提示些错误)

      第五步,php.ini添加 pcntl.so

    1  echo "extension=pcntl.so" >> /etc/php.ini //注意自己的php.ini的位置

      第六步,重启php-fpm

    1 systemctl restart php-fpm.service

    也可以用 

    1 systemctl reload php-fpm.service

      我的reload不知道怎么回事不能用了,所以用了restart。这样pcntl拓展就安装完成了

    1  php -m |grep pcntl //查看拓展安装

      

      二、安装php-redis拓展

      php-redis的拓展安装与上面的步骤一样,写在博客里主要是因为当时php源码里没有redis的包,自己在网上找的,付一下地址:http://pecl.php.net/package/redis

      步骤简单写一下:

      1、下载拓展包,解压并切换到解压完的目录下

      2、phpize生成./configure文件

      3、./configure --with-php-config=/usr/local/php/bin/php-config

      4、make && make install

      5、php.ini添加 extension=redis.so

      6、重启php-fpm

      7、php-m检查拓展安装情况

      

  • 相关阅读:
    无法定位程序输入点 ucrtbase.terminate 于动态链接库 api-ms-win-crt-runtime-|1-1-0.dll 上的解决方案
    .net 使用语音播放文字
    Firebird 数据库使用经验总结
    firebird 中的域
    WPF 中 OpenClipboard 失败问题
    Delphi Format 格式化数字
    画圆弧方法
    java.util.concurrent
    linux下软件安装方法
    基于java的http服务器
  • 原文地址:https://www.cnblogs.com/jwcrxs/p/8745998.html
Copyright © 2011-2022 走看看