0


Php简单socket编程代码示例及-php里socket扩展的应用 以及 PHP集成开发环境Visual-NMP推荐

一、Php简单socket编程代码示例及-php里socket扩展的应用

为什么需要socket编程,我自己的理解是因为socket是更底层的接口,具有更高的效率,比如你要访问一个PHP文件,正常我们在浏览器里访问时,是走的http协议,你需要先达到服务器apache或者nginx(一般是应用的80端口),然后nginx(这里就以nginx为例)会通过fastcgi将php请求转发给127.0.0.1的9000端口(默认是9000),fastcgi实际又是对php的一个访问封装,实际我们可以实现将数据直接传给php来处理,php里的socket编程就能实现。

可以这样理解,nginx是启动了服务进程以监听80端口,php也可以启动服务进程监听某个端口,从而实现和nginx一样,你向80端口发送请求,返回你网页。你向php监听的这个端口发送数据,它会返回给你数据(nginx返回的网页内容也是数据)。不同的是nginx是工作在应用层,而socket编程是工作在传输层(socket本身就是对传输层TCP/UDP的封装)。

接下来我们来实现使用php启动一个商品监听的服务,并通过客户端访问它。前提:使用socket必须在php.ini中打开socket扩展。先看server.php文件内容(注以下是在win7下试验):

php简单socket编程实现-php里socket扩展的应用

server.php里创建socket进程,绑定到本机的2016端口,并启动监听。然后我们可以在浏览器里访问这个文件启动监听服务,也可以在cmd命令行里启动,下面的示例就在命令行中使用。进入到server.php文件的目录里,使用php server.php启动。启动后我们另开一个cmd窗口,使用命令:netstat -ano | findstr "2016" 可以查看到启用的监听进程。如下图:

php简单socket编程实现-php里socket扩展的应用

此时我们能看到系统里已经在监听2016端口(上图中我把server端口再改一个,还是可以再启动的(前提是端口不被占用)。如端口已被占用,会提示失败:unable to bind address.

 这时我们查看windows里的进程管理器会发现多了两个php.exe进程。

php简单socket编程实现-php里socket扩展的应用

可见端口已经被正常监听,这时我们就可以使用客户端与它连接了,下面是client.php文件的内容:

php简单socket编程实现-php里socket扩展的应用

在客户端中我们创建socket并连接我们已经在监听的2016端口,发送信息,并读取返回的信息。在浏览器中访问client.php会看到返回结果:

send success!
send:what is the time?
accept success!
accept:hello server time 2016-06-14 02:28:13

并且在启动的cmd窗口中也可以看到交互的信息:

php简单socket编程实现-php里socket扩展的应用

这就是简单的socket编程,服务器端调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()返回,同时应答一个ACK段,服务器收到后从accept()返回。如果你理解了这些,也就知道了网上的一些高性能的PHP socket 服务器框架的原理了。

二、很好用的windows下绿色PHP集成开发环境推荐

** 关于Visual-AMP和Visual-NMP**

以前在一个技术群里看到别人发的一个截图,然后就下下来试着用了用,觉得很好用。就一直用到现在,省了不少事。Visual AMP 是一款企业级的PHP集成运行环境,图形化的操作界面,php版本的快速切换,便捷的系统托盘菜单,Windows系统的全系列支持,全面的软件集合以及各部分的自由更新,以及增强的辅助程序。优点不少:

1、这是个绿色软件,这点很好。下载下来双击运行就完事了。根本不用去配置其它的东西。
2、PHP各版本快速切换,从php5.3到php7.0每个版本都有,切换一下重启apache即可。
3、集成了Apache、PHP、MySQL、Redis、Memcached、Sphinx、MongoDB、FileZilla FTP、Xdebug、Zend Guard Loader这些php开发常用的环境。
4、附带了MYSQL管理工具phpMyAdmin、SQL Buddy、memcache、memcache可视化管理工具MemAdmin、Redis可视化管理工具phpRedisAdmin、webgrind、RockMongo 等。

其它的东西网上都有,上面是我觉得很好用的优点。Visual-AMP目前没有一个顶级域名的官网,在百度里都很难搜索到Visual-AMP的官网地址。在这里我写一下:

Visual-AMP的官网地址:Visual AMP - PHP integrated environment (写这个文章也是为了记住这个官网地址,以前花了一些时间找了好久才找到官网,今天下午又找了一段时间才找到,于是写到这里)

最新版的目前已经是5.1了,我用的是4.7再配上个软件截图。

很好用的windows下绿色PHP集成开发环境Visual-AMP(Visual-AMP官网不好找)

官网另外还有一个:Visual NMP Visual NMP是一款企业级的Nginx&PHP集成运行环境,图形化的操作界面,和这个的区别主要是将apache换成了nginx。我后来也一直使用的是Visual NMP,也推荐大家使用 Visual NMP哈。

本文转载自: https://blog.csdn.net/weixin_47792780/article/details/138290150
版权归原作者 林戈的IT生涯 所有, 如有侵权,请联系我们删除。

“Php简单socket编程代码示例及-php里socket扩展的应用 以及 PHP集成开发环境Visual-NMP推荐”的评论:

还没有评论