• 添加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检查拓展安装情况

      

  • 相关阅读:
    BZOJ3518 : 点组计数
    BZOJ2217 : [Poi2011]Lollipop
    李洪强经典面试题40-可能碰到的iOS笔试面试题-C语言
    对AFN的二次封装
    李洪强经典面试题39-iOS 程序员 6 级考试(答案和解释)
    iOS五种本地缓存数据方式
    iOS开发网络篇—数据缓存
    iOS中的通知
    李洪强漫谈iOS开发[C语言-048]-打印平方表
    李洪强漫谈iOS开发[C语言-047]-数列求和
  • 原文地址:https://www.cnblogs.com/jwcrxs/p/8745998.html
Copyright © 2020-2023  润新知