首页 > 后端开发 > 正文

php长链接框架 php可不可以socket通信长连接,不断开,然后实现多次通讯?

2023-09-14 21:26:48 | 我爱编程网

我爱编程网小编给大家带来了php长链接框架 php可不可以socket通信长连接,不断开,然后实现多次通讯?相关文章,一起来看一下吧。

php长链接框架 php可不可以socket通信长连接,不断开,然后实现多次通讯?

php可不可以socket通信长连接,不断开,然后实现多次通讯?

理论上是可以的,使用PHP提供的socket相关API,主要问题是脚本执行时间。

PHP运行模式分为非 命令行 模式及命令行模式。
非命令行模式一般是用于B/S交互,max_execution_time默认为非零,也就是限制脚本执行时间。即使你设置max_execution_time为0也面临用户浏览器请求的超时问题。
命令行模式下set_limit_time默认为0,做为本地脚本执行,所以没有上述的问题。

PHP SOCKET相关文档:

php长链接框架 php可不可以socket通信长连接,不断开,然后实现多次通讯?我爱编程网

php 怎么使用websocket推送消息

我使用的工具是基于wokman的web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。

下载和demo地址 -sender

这里面区分服务端和客户端,去上面地址下载源代码,放到你服务端。使用相关命令开启服务。

其中有一个文件是start_io.php,这个文件算是核心,里面有怎么发送socket消息的代码,也会有监控用户上下线的接口,在这个地方可以根据业务需要拓展自己的代码需求。类似: 用户在socket检测用户上下线的是时候,可以http请求到自己的api层

下面我贴一下我的代码

当然了 可能会有童鞋问了,socket如果监听到自己的api发送消息呢。这个时候我们可以看到start_io.php这个文件这个地方

这个地方明确表明了监听端口,websocket跟api在同一个服务器上面,所以用了0.0.0.0,所以你在http服务端如果想发消息给客户端,只需要发送到这个端口上面,socket自动会监听到发送给客户端。

php长链接框架 php可不可以socket通信长连接,不断开,然后实现多次通讯?

php如何使用CURL复用连接

 HTTP1.0与HTTP1.1的一个很大的差别是HTTP1.1支持长连接。现实中有很多这个场景,就是请求了一个页面,然后这个页面的其他内容,例如CSS文件,JS文件都要从同一个服务(相同服务器,相同端口)上面获取。这些向相同服务器的请求如果能够复用连接,是很有利于提供网络性能。 
    总的来说,复用HTTP连接有两个好处: 
   1. 节省系统端口资源(每一次连接都要使用端口,端口的资源是有限的) 
   2. 节省创建socket连接的时间。 
    
    下面讲讲在PHP下面,如何使用CURL来复用连接: 
    curl是在一个handle里面复用连接的,所以这样就可以复用连接了: 
    $ch = curl_init(); 
    $ret = curl_exec($ch); 
    ...... 
    $ret2 = curl_exec($ch); 
    .... 
    curl_close($ch); 
    在初始化跟关闭$ch资源时即可复用连接。 
    
    我这里写了两个函数,可以支持GET跟POST的请求,大家感兴趣可以看看。 
 
function curl_get($url, $timeout=5) {
    global $g_handle;
    if (empty($g_handle)) $ch = curl_init();

    $options = array(
        CURLOPT_URL            => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FRESH_CONNECT  => false,
        CURLOPT_FORBID_REUSE   => false,
        CURLOPT_TIMEOUT        => $timeout
    );
    curl_setopt_array($g_handle, $options);

    $ret = curl_exec($g_handle);
    return $ret;
}


// 可以支持POST数据,$post是一个数组,$timeout是超时时间。 
function curl_post($url, $post=array(), $timeout=10) {
    global $g_handle;
    if (empty($g_handle)) $g_handle = curl_init();

    $options = array(
        CURLOPT_URL => $url,
        CURLOPT_POST => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FRESH_CONNECT => false,
        CURLOPT_FORBID_REUSE => false,
        CURLOPT_TIMEOUT => $timeout,
        CURLOPT_POSTFIELDS => http_build_query($post)
    );
    if (empty($post)) $options[CURLOPT_POST] = false;

    curl_setopt_array($g_handle, $options);

    $ret = curl_exec($g_handle);
    return $ret;
}

以上就是我爱编程网小编给大家带来的php长链接框架 php可不可以socket通信长连接,不断开,然后实现多次通讯?,希望能对大家有所帮助。
与“php长链接框架 php可不可以socket通信长连接,不断开,然后实现多次通讯?”相关推荐
socket通信与php框架 php为什么不适合socket
socket通信与php框架 php为什么不适合socket

web前端开发都有哪些常见框架结构?随着互联网的不断发展,越来越多的程序员都开始学习和掌握关于web前端开发的相关技术知识。今天,我们就一起来了解一下,web前端开发都有哪些常见框架需要我们了解和掌握的。一,socket通信说起web,肯定离不开tcp协议和http协议(https协议较为复杂,暂时不在本章讨论范围之内)。http协议在后面,那什么是tcp协议,cp协议就是网络

2023-09-21 17:39:29
php中的tcp通讯框架 PHP如何实现简单的Socket
php中的tcp通讯框架 PHP如何实现简单的Socket

php即时通讯是怎么搭建的?有没有知道的?即时通讯的核心在于WebSocket,它是实现即时通讯的常用协议之一,原理是在单个TCP连接上提供双向通信的协议,通常被用于实时通信、游戏、在线交易等场景。传统的Web应用程序是基于HTTP协议的,HTTP是一种无状态协议,每次请求都需要重新建立连接,因此难以实现实时通信。而WebSocket协议通过在建立连接后保持长连接,允许服务器主动向客

2023-09-29 05:19:45
php通信框架协议 websocket实现即时通讯怎么操作?
php通信框架协议 websocket实现即时通讯怎么操作?

php框架需要掌握什么php框架需要掌握什么?下面介绍几个主流的PHP框架。(1)ZendFrameworkZendFramework是由Zend公司开发的PHP框架,可用于开发Web程序和服务。ZendFramework采用MVC架构模式来分离应用程序中不同的部分,从而方便程序的开发和维护。(2)CakePHPCakePHP是一个运用了诸如ActiveRecord、

2023-09-08 03:59:21
php通用api接口框架 php如何实现api接口
php通用api接口框架 php如何实现api接口

高并发的API接口选用什么PHP框架合适Yaf的其实本质上讲,是个基础框架,仅提供了一个简单粗暴的基础URI路由功能,完事了。最关键是并发和多线程以及定时器等等,Yaf本身不能实现。这点小性能没有必要在乎,c框架有些bug让你无从下手,phalcon就被坑过如果想用的6都会去看框架源码,用c写的框架看源码多么痛苦我觉得随着php逐渐的发展,性能逐渐的优化,这种类型框架迟早会被

2023-09-19 18:01:28
socket通信与php框架 java socket 和php 怎样实现聊天功能,求帮忙
socket通信与php框架 java socket 和php 怎样实现聊天功能,求帮忙

php为什么不适合socket作为一名非底层程序员,要想深入了解socket的内部实现机制是很困难的,我们只需明白socket是一套操作系统封装好的实现进程通信的函数,会创建和调用就够了。PHP的语言特性和自身定位决定了它只适合做socket客户端,而不适合做socket服务器端。因为socket主要面向底层和网络服务开发,一般服务器端都是用C或Java等语言实现,这样能更好地操

2023-09-21 17:39:05
web前端开发微信支付 通过手机点了这个链接之后可以跳转到微信支付,这个源码怎么写
web前端开发微信支付 通过手机点了这个链接之后可以跳转到微信支付,这个源码怎么写

App微信支付iOS微信支付小程序支付微信公众号支付最近接到一个项目,需要做App微信支付iOS微信支付小程序支付微信公众号支付在这个过程中走了很多弯路。因此记录一下App微信支付iOS微信支付小程序支付在app支付中查看uni-app官网 可以实现 app微信支付  App微信支付iOS微信支付小程序支付注:iOS微信支付需要调起上面链接里面的App支付 可以实现 iOS

2023-09-23 00:55:30
tcp长连接php框架 PHP是什么?
tcp长连接php框架 PHP是什么?

php可不可以socket通信长连接,不断开,然后实现多次通讯?理论上是可以的,使用PHP提供的socket相关API,主要问题是脚本执行时间。PHP运行模式分为非命令行模式及命令行模式。非命令行模式一般是用于B/S交互,max_execution_time默认为非零,也就是限制脚本执行时间。即使你设置max_execution_time为0也面临用户浏览器请求的超时问题。

2023-09-16 05:01:09
php.http长链接框架 什么是php框架?
php.http长链接框架 什么是php框架?

php需要学习哪些框架PHP需要学习哪些框架呢?让我们一起了解一下!PHP需要学习的框架有很多,下面为您例举几种常用的框架:国内框架:ThinkPHP、Canphp、KYPHP、InitPHP、SpeedPHP、CdvPHP等。国外框架:ZendFramework、Codelgniter、CakePHP、Symfony、Yii、Seagull、Laravel等。拓展:什么

2023-09-28 21:15:04