编程语言
首页 > 编程语言> > PHP相当于Ruby的救援

PHP相当于Ruby的救援

作者:互联网

没有足够的声誉来正确标记(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子句,每个子句捕获一个不同的异常类.

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

标签:php,ruby,sockets,try-catch,rescue
来源: https://codeday.me/bug/20190728/1564779.html