教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 php进程属于长连接么

php进程属于长连接么

发布时间:2020-07-08   编辑:jiaochengji.com
教程集为您提供php进程属于长连接么等资源,欢迎您收藏本站,我们将为您提供最新的php进程属于长连接么资源
一个完整的软件系统大多数情况下是由多个进程共同协作进行的,哪怕它们在同一台服务器上。所以,进程之间如何进行高效的通信至关重要。

php作为脚本语言,不像C /Java那样进程常驻,所以它连接后端的服务都是使用短连接。

画外音:有朋友说,可以用C写扩展? (推荐学习:PHP视频教程)

\"php-39.jpg\"/

上图是一种典型场景,站点php部署在机器A上,缓存memcache部署在机器B上,之间通过短连接通信,过程为:

(1) php建立tcp短连接;

(2) 按照memcache协议发送数据;

(3) 接收memcache返回的数据;

(4) php关闭tcp短连接;

在流量小时,上述过程没有任何问题,当网站流量非常大的情况下,短连接可能会成为性能瓶颈,有什么优化办法吗?

画外音:建立连接,销毁连接很耗时。

话锋一转,什么是UNIX Domain Socket?

UNIX Domain Socket是一种IPC机制,它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。

画外音:IPC, Inter-Process Communication, 进程间通信。

它可以用于同一台主机上两个没有亲缘关系的进程,并且是全双工的,提供可靠消息传递(消息不丢失、不重复、不错乱)的IPC机制。

画外音:亲缘关系是指,父子进程或者兄弟进程这种“特殊的”进程关系。

可以看到,UNIX Domain Socket的效率会远高于tcp短连接,但它只能用于同一台主机间的进程通讯,而php应用和后端服务往往是部署在不同的机器上的,此时能否利用它来进行优化呢?

\"php-40.jpg\"/

优化后的简易架构图如上:

(1) 在php应用服务器上部署一个local-proxy;

(2) php与local-proxy之间使用UNIX Domain Socket来通讯;

(3) local-proxy与后端服务进行TCP长连接通讯;

这样就大大提升了通讯效率,免除了每次请求都要进行的建立与关闭tcp短连接的开销

以上就是php进程属于长连接么的详细内容,更多请关注教程集其它相关文章!

  • 本文原创发布教程集,转载请注明出处,感谢您的尊重!
  • 您可能感兴趣的文章:
    php进程属于长连接么
    php中连接mysql函数mysql_connect与mysql_pconnect对比
    php中连接数据库的方法是什么?
    怎样使PHP与MySQL数据库进行持久连接
    数据库中的长连接和短连接区别分析
    MySQL sleep进程连接过多卡住了问题解决办法
    mysql超出最大连接数的原因剖析
    php中mysql_connect与mysql_pconncet的用法区别
    HTML5中WebSocket是什么意思
    浅析php-fpm 和 mysql 之间的关系详解

    [关闭]
    ~ ~