首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:建立多个fsockopen();连接的最有效方法?

PHP:建立多个fsockopen();连接的最有效方法?
EN

Stack Overflow用户
提问于 2011-11-17 07:19:05
回答 2查看 783关注 0票数 0

嘿,伙计们,我正在做一个网站,在那里你可以提交一个服务器来做广告。当用户转到我的网站的索引页面时,它获取所有提交的服务器的ip,然后使用fsockopen()测试它是否在线,如下所示:

代码语言:javascript
复制
while($row = mysql_fetch_assoc($rs)) {

    $ip = $row['ip'];

    $info = @fsockopen($ip, 25565, $errno, $errstr, 0.5);

     if($info) {
    $status = "<div><img width='32px' height='32px' 
            title='$name is online!' src='images/online.png'/></div>";

    $online = true;

    } else {

    $status = "<div><img width='32px' height='32px' 
            title='$name is offline!' src='images/offline.png'/></div>";

    $online = false;
    }

}

}

这种方式工作得很好,但唯一的缺点是当你加载网站时,由于调用了fsockopen()方法,所以需要2-4秒才能开始加载网站。我想知道是否有更好的方法来减少网站加载前的等待时间。

任何信息都将不胜感激,谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-17 07:29:44

将在线状态和上次检查时间存储在数据库中,如果上次检查时间超过15分钟,则对其进行更新。我很确定你不需要获取每个页面加载的状态?连接到每台服务器所需的时间会降低网站的运行速度。

然后,您可能希望将更新过程转移到cronjob,而不是依赖于访问您的网站的人来更新服务器状态。

票数 1
EN

Stack Overflow用户

发布于 2011-11-17 07:32:14

看看你的例子,我会让所有的$status代码都是对另一个检查单个服务器的php页面的javascript调用。

但是,将状态检查转移到cron作业或使用某种状态缓存的想法也非常好。也许在数据库中存储状态只检查已过期的状态(时间限制由您设置)。

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

https://stackoverflow.com/questions/8160128

复制
相关文章

相似问题

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