On Wed, 12 Dec 2001, Andrew Sitnikov wrote:
> Hello Khimenko,
>
> Наверно правильнее использовать fsockopen() тем самым проверить есть
> ли возможность сделать коннект на нужный ност и порт, если нет то
> игнорировать этот хост.
>
> http://www.php.net/fsockopen
>
[skipped]
>
> KV> Есть простое решение, которое, правда не годится при больших нагрузках:
> KV> сделай ДВА .php-скрипта. Одному установи разумный timeout и пусть он
> KV> ТОЛЬКО забирает файл и отдает его наружу, а второй уже делает все
> KV> остальное. Второй ходит куда-нибудь на
> KV> http://localhost/path-to-first-on/name.php?arguments
> KV> и если получает файл, то получает, если не получает, то не получает.
> KV> Нужно только timeout'ы поставить разные - чтобы второй скрипт мог еще
> KV> как-то отреагировать на произшедший timeout в первом :-)
> Не очень красивое решение
>
А чем плохо-то ? Второй apache запускается ? Ну дык если нагрзка невелика,
то это неважно. А если даже убеиться, что сервер есть и отвечает перед
получением файла, то все равно есть еще возможность не получить файл из-за
того, что где-то канал забился или еще чего (например если винт на сервер
сдох, то он БУДЕТ отвечать на ping, БУДЕТ устанавливать connection, но
МОЖЕТ просто виснуть на неопределенное время при попытке реально скачать
файл). В моем решении ты гарантированно получаешь файл, когда это можно
сделать и гарантированно же получаешь отлуп (или недокачанный файл) -
когда нельзя. Что может быть лучше, чем более экономное решение с
fsockopen или ping'ом ... А с fsockopen при неаккуратной реализации (и/или
не очень корректно написанном ftp-сервере) может плодить открытые процессы
на этом самом ftp-сервере (они через 10мин. умрут, сворее всего, по
timeout'ы - но за 10мин. можно МНООГО процессов наоткрывать) - за что тебя
по головке не погладят ... В общем нужно смотреть на специфику задачи: любое
РАБОТАЮЩЕЕ решение красивее любого НЕ РАБОТАЮЩЕГО :-)
=============================================================================
= Apache-Talk@xxxxxxxxxxxxx mailing list =
Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =
"Russian Apache" includes software developed
by the Apache Group for use in the Apache HTTP server project
(http://www.apache.org/) See
Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C)
1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.