Почему нет?
<забастовка> (linesProcessed / TimeTaken)
забастовка> (timetaken / linesProcessed) * LinesLeft = TimeLeft
TimeLeft
будет тогда выражен в любой единице времени timeTaken
.
спасибо за комментарий Вы правы, что это должно быть:
(TimeTaken / linesProcessed) * linesLeft = timeLeft
, таким образом, мы имеем
(10 / 100) * 200
= 20 Секунд теперь, 10 секунд проходят прошлые
(20 / 100) * 200
= 40 Секунд, оставленных теперь еще 10 секунд, и мы обрабатываем еще 100 строк
(30 / 200) * 100
= 15 Секунд, и теперь все мы видим, почему диалоговое окно файла копии спрыгивает с 3 часов к 30 минутам:-)
Взгляните на этот простой пример со страницы руководства fsockopen
:
<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>
Соединение с сервером устанавливается с помощью fsockpen
. $ out
содержит HTTP-запрос, который затем отправляется с помощью frwite
. Затем ответ HTTP читается с помощью fgets
.
Если все, что вам нужно сделать, это выполнить запрос GET и получить тело ответа, большинство файловых функций поддерживают использование URL-адресов:
<?php
$html = file_get_contents('http://google.com');
?>
<?php
$fh = fopen('http://google.com', 'r');
while (!feof($fh)) {
$html .= fread($fh);
}
fclose($fh);
?>
Для более чем простых GET используйте curl ( вам нужно скомпилировать его в php). С помощью curl вы можете выполнять запросы POST и HEAD, а также устанавливать различные заголовки.
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://google.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($ch);
?>
cURL проще, чем реализация HTTP на стороне клиента. Все, что вам нужно сделать, это установить несколько параметров, а остальное сделает cURL.
$curl = curl_init($URL);
curl_setopt_array($curl,
array(
CURLOPT_USERAGENT => 'Mozilla/5.0 (PLAYSTATION 3; 2.00)',
CURLOPT_HTTPAUTH => CURLAUTH_ANY,
CURLOPT_USERPWD => 'User:Password',
CURLOPT_RETURNTRANSFER => True,
CURLOPT_FOLLOWLOCATION => True
// set CURLOPT_HEADER to True if you want headers in the result.
)
);
$result = curl_exec($curl);
Если вам нужно установить заголовок, который не поддерживает cURL, используйте параметр CURLOPT_HTTPHEADER, передавая массив дополнительных заголовков. Установите CURLOPT_HEADERFUNCTION на обратный вызов, если вам нужно проанализировать заголовки. Дополнительные параметры см. В документации для curl_setopt
.