php扩展php-nano的安装与测试

官网

https://nanomsg.org/

源码下载

https://github.com/mkoppanen/php-nano

提前准备

你需要已经安装了nanomsg的库,php,和pkg-config,可能还有其他需要的东西,但是我没有遇到,遇到的问题可以留言讨论。

nanomsg库的安装方法可以查看另一篇文章

https://blog.csdn.net/andylauren/article/details/82818481

编译源码

首先看一下源码提供的README.md,其中有一些错误,我在这里

How to install

1.Install nanomsg library, see: https://github.com/nanomsg/nanomsg

1.安装nanomsg库
2.Install PHP dev tools for extension: sudo apt-get install php5-dev (for Debian/Ubuntu) or sudo yum install php-devel (Fedora)

2.需要安装php

3.Clone repo at your server, e.g. cd /var/tmp && git clone https://github.com/mkoppanen/php-nano.git

3.拷贝php-nano源码
4.cd /var/tmp/php-nano

4.这里我使用的是压缩包下载,所以我就直接进入文件夹即可。
5.phpize

5.使用phpize命令生成configure文件
6. ./configure

6.这里注意一个问题,需要将nanomsg.pc文件改名为libnanomsg.pc文件,我使用的是默认安装位置在/usr/local/lib/pkgconfig

否则会报错“error: Unable to find usable libnanomsg installation”

7.make

在这一步的时候需要将nanomsg库的头文件nn.h和pubsub.h复制到编译的include文件夹中,否则会报错这两个头文件找不到。

php_nano_private.h:38:16: fatal error: nn.h: 没有那个文件或目录

应该会有其他正规方法,但是我的这个方法好用。
8.sudo make install

这样nano.so的库就被安装在“Installing shared extensions:     /usr/lib/php/20151012/”里了。
9.Edit your php.ini file, add extension=nano.so

9.在你的php.ini文件中添加外部库,如果是apache需要找到服务器的配置文件。
10.Restart FPM service or Apache web server.
!Note! tested with PHP 5.6.2 only ( PHP_VERSION : 5.6.9-0+deb8u1 ZEND_VERSION: 2.6.0 ). PHP must support Namespace (PHP 5 >= 5.3.0, see: http://php.net/manual/en/language.namespaces.php)

注意,需要php在5.3以上。

测试

在这个源码中有一个bus的例子,这个例子与c语言的bus例子一模一样,我们就使用这个做测试

在examples目录下

打开文件可以看到测试的方法

 php -d extension=nano.so  ./bus.php node0 node0 node1 node2 & node0=$!
 php -d extension=nano.so  ./bus.php node1 node1 node2 node3 & node1=$!
 php -d extension=nano.so  ./bus.php node2 node2 node3 & node2=$!
 php -d extension=nano.so  ./bus.php node3 node3 node0 & node3=$!
 sleep 5
 kill $node0 $node1 $node2 $node3

输出如下

SENDING 'node0' ONTO BUS
SENDING 'node2' ONTO BUS
node2: RECEIVED 'node0' FROM BUS
node0: RECEIVED 'node2' FROM BUS
SENDING 'node1' ONTO BUS
node1: RECEIVED 'node0' FROM BUS
node2: RECEIVED 'node1' FROM BUS
node1: RECEIVED 'node2' FROM BUS
node0: RECEIVED 'node1' FROM BUS
SENDING 'node3' ONTO BUS
node0: RECEIVED 'node3' FROM BUS
node1: RECEIVED 'node3' FROM BUS
node2: RECEIVED 'node3' FROM BUS
node3: RECEIVED 'node0' FROM BUS
node3: RECEIVED 'node2' FROM BUS
node3: RECEIVED 'node1' FROM BUS

 

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页