加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP相当于Ruby的救援

发布时间:2020-12-13 21:49:56 所属栏目:PHP教程 来源:网络整理
导读:没有足够的声誉来正确标记( ruby,PHP,socket,rescue) 我很长一段时间没有练过我的PHP,因为我一直在做更多的Ruby脚本.我很尴尬地请求帮助. 我知道,在Ruby中,我可以使用rescue来防止脚本在出错的情况下崩溃,我希望用PHP实现同样的功能. 例如,在Ruby中: requir
没有足够的声誉来正确标记( ruby,PHP,socket,rescue)

我很长一段时间没有练过我的PHP,因为我一直在做更多的Ruby脚本.我很尴尬地请求帮助.

我知道,在Ruby中,我可以使用rescue来防止脚本在出错的情况下崩溃,我希望用PHP实现同样的功能.

例如,在Ruby中:

require 'socket'

begin puts "Connecting to host..." 
host = TCPSocket.new("169.121.77.3",333) 
# This will (intentionally) fail to connect,triggering the rescue clause. 
rescue puts "Something went wrong." 
# Script continues to run,allowing,for example,the user to correct the host IP. 
end

我的PHP代码有点乱 – 这已经很长时间了.

function check_alive($address,$service_port) { 
    /* Create a TCP/IP socket. */ 
    $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP); 
    if ($socket === false) { 
      echo socket_strerror(socket_last_error());
    } 
    else { 
      echo null; 
    } 
    $result = socket_connect($socket,$address,$service_port); 
    if ($result === false) { 
       echo socket_strerror(socket_last_error($socket)); 
       return 1; 
    }
    else { 
       echo null; 
    } 
    socket_close($socket); 
    return 0; } 
    $hosts = [...]; 
    // list of hosts to check 
    foreach($hosts as $key=>$host) { 
       check_alive($hosts); 
    }

基本上,我有一系列主机,我想查看它们是否还活着.没有必要让所有主机都活着,所以这就是我被困住的地方 – 数组中的第一个死主机崩溃了脚本.

任何建议都将非常感激 – 我愿意接受我不完全理解PHP中的套接字连接.

解决方法

PHP等价物是:

try { ... } catch (...) { ... }

如果您使用的是PHP 5.5,那么还有:

try { ... } catch (...) { ... } finally { ... }

你可以有几个catch子句,每个子句捕获一个不同的异常类.

最终部分始终运行,包括引发异常时.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读