首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在php套接字中建立持久连接,避免apache实例过多

问在php套接字中建立持久连接,避免apache实例过多
EN

Stack Overflow用户
提问于 2014-05-19 18:13:02
回答 2查看 983关注 0票数 1

我有一个包含图片的页面。图片应该每秒刷新一次。我有一个socket.php文件,它创建一个到c++程序的链接,并请求一张图片,然后将其作为输出。我有一个js代码,每秒都会向socket.php请求一张图片。因此,我的js代码在客户端浏览器中每秒都会请求服务器上的socket.php向用户发送一张新图片,而socket.php则向我的c++代码请求一张图片,接收图片并将其传递给客户端浏览器。一切都很好。但是,当我将时间间隔从1秒改为50毫秒时,我的服务器上的"apache2“进程的数量真的增加了。我的意思是大约200个apache2进程,这在我的服务器上占用了太多的内存。

我的问题是:我应该怎么做才能在php和c++之间建立一个持久的连接,这样对于用户的每个查询,都不会创建新的连接?持久连接是否有助于避免此数量的apache进程?

这是我的socket.php文件:

代码语言:javascript
复制
if(isset($_GET['message']))
        $message = $_GET['message'];
    else $message = "-1";
    $host    = "127.0.0.1";
    $port    = 12345;
    $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
    $result = socket_connect($socket, $host, $port) or die("Could not connect to server\n");    
    socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");
    $b= '';
    $buf = '';
    while(true)
    {
        $bytes = socket_recv($socket, $buf, 2048, 0);
        if($bytes==0) break;
        $b .= $buf;
    }
    $im = imagecreatefromstring($b);
    header('Content-Type: image/jpeg');
    imagejpeg($im);
    imagedestroy($im);

这是我的js代码:

代码语言:javascript
复制
function updateImage()
{
if(!isPaused)
{
    if(newImage.complete) {
    document.getElementById("myimg").src = newImage.src;
    newImage = new Image();
    newImage.src = "socket.php?message=0&image" + count++ + ".jpg";
    }
    setTimeout(updateImage, 50);        
}
}
EN

回答 2

Stack Overflow用户

发布于 2014-05-19 19:26:02

一分钟内打60个电话算不了什么,也就是200个。我认为问题是你没有关闭套接字。

最好的方法是让你的c++每秒更新一次mysql DB,页面应该从DB请求更新图像,这样你就可以获得灵活性。在这一点上,您还可以对镜像进行变现,还可以在不打开新套接字和不调用C++应用程序的情况下附加尽可能多的镜像用户。

票数 1
EN

Stack Overflow用户

发布于 2016-02-06 07:34:00

据我所知,除了数据库连接(例如,mod_php支持的所有数据库连接)之外,人们真的不能持久化从PHP的Apache实例到另一个服务的连接。@volkinc的PHP如何执行的链接是一个很好的例子,它说明了PHP必须缓存/存储这种持久链接的地方,但不是这样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23735096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档