PHP开发工具lime framework、PHP Native Interface、foolsock介绍

以下为你介绍的PHP开发工具都可用在Linux系统上:lime framework(PHP 的微框架)、PHP Native Interface(PHP 的一个C扩展)、foolsock(PHP TCP长连接扩展)。

1、lime framework(PHP 的微框架)

Lime 是一个 PHP 的微框架(微型PHP 5框架),帮助你快速构建简单但强大的 RESTful 风格的网页应用和 API。它提供路由(routing)、依赖注入(dependency injection)、中间件(middleware)、视图继承、视图片段和安全 cookies 等功能。

系统需求:

PHP >= 5.4.0。

用法:

一个 Lime 应用主要包含三部分,生成 Lime 应用实例,定义路由,执行应用。

// 加载 Lime 框架

require 'Lime/Lime.php';

// 生成一个 Lime 应用实例

$app = new \Lime\Lime();

// 定义一个 HTTP GET 请求路由:

$app->get('/', function() {

echo 'hello world';

});

// 执行 Lime 应用

$app->run();

下载地址:https://github.com/icodechef/Lime

2、PHP Native Interface(PHP 的一个C扩展)

PHP开发工具lime framework、PHP Native Interface、foolsock介绍

PHP Native Interface简称PNI。特点如下:

PHP 的一个C扩展。

通过它,可以让PHP调用其他语言写的程序,比如C/C++、汇编等等。

需要PHP来调用,但PHP有限使用的领域里,PNI可以发挥用处,比如图像处理、统计学习、神经网络、实时性要求高的程序等等。

功能和用法与Java的PNI,Python的Ctypes类似。

使用场景:

PHP 不是完美的语言,总有一些情况下,不得不使用其他语言来协助完成。在这些特殊的场景下,使用PNI就可以将PHP与其他语言连接起来:

实时性要求特别高的程序,特别底层的程序。

用其他语言写的程序,历史遗留下来的程序,如果用PHP重新实现成本太高的程序或逻辑。

基于平台特性的代码,不能用PHP实现的程序。

调用系统的动态链接库。

与直接编写PHP扩展相比:

直接编写PHP扩展去调用其他语言的接口是常用方法,不过PNI有更多的好处:

降低开发和运维成本:

不需要每次有新的需求,就去编写或改动PHP的扩展。对PHP扩展的开发、调试会占用很多的时间。

PHP扩展更改后上线,需要重启PHP服务,这是有一定风险的。

如果使用PNI,就会便捷很多,对新功能的开发和上线,只需操作PHP的代码即可。

降低学习成本:

开发PHP扩展,需要开发人员去学习 PHP-API、Zend-API、PHP扩展框架,甚至需要深入去理解PHP内核。有了PNI,问题就简单多了。

灵活性:

使用PNI,可以更灵活地使用本地类库。

环境要求:

PHP 5.3 以上版本,PHP 7.0。

必须是GCC编译器。

CPU 必须是x86_64架构或被兼容的架构。

安装步骤:

1]、下载

git clone https://github.com/zuocheng-liu/pni.git

2]、依据PHP的版本,切换到合适的分支

git checkout for_php_5  # 适用于PHP5.x

git checkout for_php_7  # 适用于PHP7.x

3]、编译和安装

cd <src-pni>

phpize

./configure

make && make install

4]、配置PHP,使其生效

把下面一行添加到 php.ini

extension=pni.so;

5]、重启PHP服务

service php-fpm restart  // cgi mode

apachectl restart   // sapi mode 

// do nothing in cli mode

下载地址:https://github.com/zuocheng-liu/pni

3、foolsock(PHP TCP长连接扩展)

foolsock 是为了实现 RPC 通信中 TCP 长连接而开发的 PHP 扩展。

简介:

PHP 很多项目随着业务规模的增长(尤其是终端众多的情况下)逐渐向服务化演变,常见的一种架构模型是将相对独立或者比较耗时的业务抽象为单独的服 务(如用户模块)使用c/c++、golang等更高效的语言处理,具体的业务层(如:网页端、移动端)来调用各个服务,这种架构大大降低了各业务之间的耦合度,同时最大限度的提高了模块的重用性。

PHP开发工具lime framework、PHP Native Interface、foolsock介绍

业务层与后端的服务之间的通信协议中,http并不是一种高效的rpc协议。事实上php中有众多的扩展可以为我们提供很好的范例,如:mysql、memcached等等都是最常见不过的"服务"了,我们完全可以采用它们的客户端处理方式。

mysql、memcached这些扩展都是采用TCP与服务端进行通信,你肯定记得他们都有长连接的连接方式,有兴趣的同学可以去翻一下它们的源码。

如果像mysql、memcached那样将协议的处理也封装在php扩展中,那么意味着每增加一个服务我们都需要安装一个扩展,这样将很不利于维护,同时也会降低开发效率。

foolsock对socket进行了一层简单的封装,将连接放在persistent_list哈希表中,每个fastcgi进程连接后不会被释放,下次请求时直接使用。目前最大的连接数等于fastcgi进程数,当然你也可以自行修改下实现连接池的效果。

使用foolsock可以将协议相关的逻辑也使用php实现,可以大大降低开发成本,foolsock/example/memcache_client.php提供了一个简单的memcache客户端的示例。

安装:

从github下载源码后解压:

cd foolsock

phpize

./configure

make && make install

最后将extension=foolsock.so加入php.ini,重启php-fpm或者其他fastcgi。

使用:

<?php

$sock = new FoolSock(string $host,int $port);

//connect

$r = $sock->pconnect([ int $timeoutms ]);  //超时时间,单位:毫秒

if(false === $r){

exit();

}

//write

$sock->write(string $msg);//返回false时可以调用$sock->pclose()关闭再重连$sock->pconnect()

//read

$sock0->read(int $read_buf_size); //超时时间大于0时如果read无数据返回此操作将会阻塞直至超时

示例:

example/memcache_client.php提供了一个简单的memcache客户端的例子(使用memcache二进制协议),实现memcache两个基本操作:Add/Get,经过测试处理效率与使用memcache扩展相当。

下载地址:https://github.com/pangudashu/foolsock

注明

以上就是PHP开发工具lime framework、PHP Native Interface、foolsock的介绍内容,这些PHP开发工具都能使用在Linux操作系统中。

栏目相关文章