Показать сообщение отдельно

  #3  
Старый 19.09.2007, 22:20
Darkweider
Участник форума
Регистрация: 08.02.2007
Сообщений: 162
Провел на форуме:
463978

Репутация: 34
По умолчанию

Вот еще нашел пример помогите кто-нибудь подробно разобраться неплохая может статья выйдет.... мало где нашел подробное описание.... Я конешно понимаю надо смотреть каменты и т.п. ,но все таки когда теретически понимаешь как это организуется, только тогда появлятся возможность написать что-то свое...
PHP код:
< ?php
$hosts 
= array("host1.sample.com""host2.sample.com");
$timeout 15;
$status = array();
$sockets = array();
/* Инициируем соединения ко всем хостам одновременно */
foreach ($hosts as $id => $host) {
    
$s stream_socket_client("$host:80"$errno$errstr$timeout
        
STREAM_CLIENT_ASYNC_CONNECT|STREAM_CLIENT_CONNECT);
    if (
$s) {
        
$sockets[$id] = $s;
        
$status[$id] = "in progress";
    } else {
        
$status[$id] = "failed, $errno $errstr";
    }
}
/* Теперь ожидаем результат */
while (count($sockets)) {
    
$read $write $sockets;
    
/* Вот она - магическая функция - пояснения ниже */
    
$n stream_select($read$write$e null$timeout);
    if (
$n 0) {
        
/* доступные для чтения сокеты готовы отдать нам данные 
           или попытка провалилась 
        */
        
foreach ($read as $r) {
            
$id array_search($r$sockets);
            
$data fread($r8192);
            if (
strlen($data) == 0) {
                if (
$status[$id] == "in progress") {
                    
$status[$id] = "failed to connect";
                }
                
fclose($r);
                unset(
$sockets[$id]);
            } else {
                
$status[$id] .= $data;
            }
        }
        
/* доступные для записи сокеты могут принимать 
            HTTP-запросы 
        */
        
foreach ($write as $w) {
            
$id array_search($w$sockets);
            
fwrite($w"HEAD / HTTP/1.0rnHost: "
                
$hosts[$id] .  "rnrn");
            
$status[$id] = "waiting for response";
        }
    } else {
        
/* ожидаем таймаут; подразумевается, что все сокеты, 
            ассоциированные с массивом $sockets не сработали 
        */
        
foreach ($sockets as $id => $s) {
            
$status[$id] = "timed out " $status[$id];
        }
        break;
    }
}
foreach (
$hosts as $id => $host) {
    echo 
"Host: $hostn";
    echo 
"Status: " $status[$id] . "nn";
}
?> 
Помогите расписать по блокам...Вписываю какие-нибудь сайты,запускаю и все виснет...

Последний раз редактировалось Darkweider; 19.09.2007 в 22:56..
 
Ответить с цитированием