Neden benim komut dosyası başlıklarını almak için bu kadar uzun sürüyor?

0 Cevap php
<?php
set_time_limit(0);

$errorArr = array();
if (!isset($argv[1]))
{
    array_push($errorArr, "You forgot to enter a host.");
}
if ((isset($argv[1])) AND (!filter_var($argv[1], FILTER_VALIDATE_IP)))
{
    array_push($errorArr, "The host you entered is not a valid IP address.");
}
if (!isset($argv[2]))
{
    array_push($errorArr, "You forgot to select a port.");
}
if (!empty($errorArr))
{
    echo "You have the following errors:\n";
    print_r($errorArr);
    die("Syntax is as follows: php {$argv[0]} host port\n");
}

$host = $argv[1];
$port = $argv[2];

echo ":::Connecting...\n";
$fh = fsockopen($host, $port);
if (!$fh)
{
    die(":::Connection failed.\n:::Aborting.\n");
}
echo ":::Connected!\n:::Sending headers.\n";

$header = "PROPFIND /webdav/ HTTP/1.1\r\n";
$header .= "Host: {$host}\r\n";
$header .= "User-Agent: BitKinex/3.2.3\r\n";
$header .= "Accept: */*\r\n";
$header .= "Pragma: no-cache\r\n";
$header .= "Cache-Control: no-cache\r\n";
$header .= "Depth: 1\r\n";
$header .= "Content-Length: 220\r\n";
$header .= "Content-Type: text/xml\r\n\r\n\r\n";
if (!fwrite($fh, $header))
{
    die(":::Couldn't send headers. Aborting.\n");
}
$exHeader = explode("\r\n", $header);
foreach ($exHeader as $ecHeader)
{
    echo "<<<{$ecHeader}\n";
}
echo "\n:::Retrieving syntax...\n";
while(1)
{
    while ($data = fgets($fh, 512))
    {
        echo ">>>{$data}";
        flush();
    }
}
?>

Ben, WebDAV bağlanmak bir dosya yüklemek ve kesmek için bir senaryo üzerinde çalışıyorum. Bu bağlanır ve ince başlıkları gönderir, ama sonra sözdizimi almak için sonsuza kadar sürer. Zaman zaman, birkaç dakika sürer, ve ben neden anlayamıyorum. Benim kodda bir sorun var mı?

Ve evet, ben orada sonsuz bir while döngüsü var biliyoruz. Ben sunucu bana bilgi gönderme bitince bilmek nasıl anladım değil çünkü o, bilerek bitti. Yani herkes buna fikir verebilir eğer, başka bir soru sanırım.

Teşekkürler

0 Cevap