これを適切にタグ付けするのに十分な評判がありません (ruby、PHP、socket、rescue)
私は、Ruby スクリプトをより多く作成しているため、長い間 PHP を練習していませんでした。これで助けを求めるのはちょっと恥ずかしいです。
Ruby では、レスキューを使用して、エラーが発生した場合にスクリプトがクラッシュするのを防ぐことができることを知っています。また、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 のソケット接続を完全には理解していないことを受け入れます。