centos7.4下php7.25多线程pthreads安装及demo
关键词: 发布时间:2018-08-05 03:10:19 浏览次数:1498

php7编译安装时记得开启--enable-maintainer-zts


下载pthread源码:

https://github.com/krakjoe/pthreads

编译安装


由于在linux下php是以fpm-fcgi模式运行的,此种模式下不支持pthreads,会报错误:

<b>Fatal error</b>:  The fpm-fcgi SAPI is not supported by pthreads in <b>Unknown</b> on line <b>0</b><br />


解决办法:找到php.ini然后复制一份,名为php-cli.ini:

-rw-r--r--   1 root root  70214 8月   5 02:46 php-cli.ini

-rw-r--r--   1 root root  70215 8月   5 01:56 php.ini

这两个文件的差别在于php.ini中不要开启extesion=pthreads,而在php-cli.ini中开启此项;

这样php-fpm运行时生效的是php.ini,而以cli模式运行pthreads相关程序时,起作用的是php-cli.ini文件


示例(要在cli模式下运行,也就是像dos黑窗口那种命令行下运行,也可以在一个文件xx.php中用exce命令来执行下的demo.php):

直接在浏览器中运行demo.php是会报错的,会报找不到pthread类,因为浏览器中运行请求的的是php-fpm,他起作用的是php.ini,这种模式不支持pthreads,而且我们在php.ini中也没有开启pthreads,所以报错;而以cli模式运行时,php会自动读取php-cli.ini中的配置,这里面有开启pthreads所有程序可以正常运行;


demo.php

<?php

/**
 * 用pthreads写的多线程demo,要在cli模式下运行
 * Class Request
 */
class Request extends Thread {
    public $url;
    public $response;
    public function __construct($url) {
        $this->url = $url;
    }
    public function run() {
        $this->response = file_get_contents($this->url);
    }
}
echo time().'<br/>';
$chG = new Request("http://www.hu-rong.com");
$chB = new Request("http://www.baidu.com");
$chG ->start();
$chB ->start();
$chG->join();
$chB->join();

echo $gl = $chG->response;
echo $bd = $chB->response;
echo time();


赞:(0)
踩:(0)
相关文章
windows下使用MongoDB Compass Com
Oracle VM VirtualBox上不了网的解
Oracle VM VirtualBox中设置共享文
centos7.4 64位下安装php-7.2.5及p
centos7.4 64位下安装nginx及站点
centos7.4 64位下composer安装及配
centos7.4 64位下安装MariaDB 10.2
centos7.4 64位下Git安装及使用
centos7.4 64位下redis安装密码设
centos7.4 64位下swoole安装及配置
热门文章
win7中将文件拷贝到虚拟机linux下
php中用uploadify上传时session丢
laravel页面静态化的方法
centos7.4 64位下swoole安装及配置
centos7.4下php7.25多线程pthreads
微信扫一扫在哪
php-fpm经常卡死
单点登录sso原理及php实现方式及de
phpexcel设置行高及列宽,背景颜色,
一个简单的laravel分表联合查询
好评文章
php7中使用mongodb的aggregate进行
windows下使用MongoDB Compass Com
phpexcel设置行高及列宽,背景颜色,
laravel 中悲观锁 & 乐观锁的使用
laravel整合dingo/api方法步骤:jwt
在php中用curl请求java接口无法获
laravel页面静态化的方法
一个简单的laravel分表联合查询
laravel对具体的路由不采用csrfTok
php7 mongodb distinct及count方法
标签
rabbitmq mysql备份 elasticsearch
站点信息
建站时间:2011年
文章数:500篇
浏览数:253628
粤ICP备18028092号-1  微信:hurong241