не имеют достаточной репутации помечать это правильно (рубин, PHP, сокет, спасение)PHP эквивалент спасения Руби
Я не практиковал мой 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.
-1 формат ваш код и ваш вопрос! Вы пытались использовать [* Try & catch *] (http://us3.php.net/exceptions)? – alfasin
Он явно не знает, как форматировать, и это был его первый выстрел в него. Не нужно ниспровергать его на таких вещах, скорее объясните или сделайте это за него. – Zippie
Ну, вы знаете, удачи с PHP: http://www.phpsadness.com/sad/38 – SirDarius