|
|
автор: helpdes (08.01.2006 в 03:29) |
|
|
для: cheops
(08.01.2006 в 03:13)
| | Верно... Проблема была в win-сервере.
Поставил на Freebsd и все ок .
Всем спасибо за ночную дискусию, очень приятно, что есть такие люди.
До встречи с новой проблемой ;) | |
|
|
|
|
|
|
|
для: helpdes
(08.01.2006 в 02:48)
| | Попробуйте так:
<?php
/*
Получение станицы методом GET */
function getData($host, $path, $proxy = false, $proxyport = 80, $get = true, $maxsize = false)
{
$buffer = true;
if (empty($path)) $path='/';
if ( !$proxy ) {
$proxy = $host;
$out = "GET $path HTTP/1.0\r\n";
$out .= "Host: $host\r\n";
} else {
$out = "GET http://$host$path HTTP/1.0\r\n";
$out .= "Host: $host\r\n";
}
$fp = @fsockopen("tcp://".$proxy, $proxyport, $errno, $errstr, 5);
if (!$fp) {
return false;
} else {
$out .= "Referer: $host$path\r\n";
$out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n";
$out .= "Connection: close\r\n";
$out .= "\r\n";
fwrite($fp, $out);
stream_set_blocking($fp, FALSE);
stream_set_timeout($fp, 5);
if($get)
{
$status = stream_get_meta_data($fp);
while (!feof($fp) && !$status['timed_out'])
{
$buffer .= fgets($fp, 128);
if($maxsize) {
if( strlen($buffer) > $maxsize ) break;
}
$status = stream_get_meta_data($fp);
}
}
fclose($fp);
}
return $buffer;
}
echo getData("gamer.mysite.net.ua", "/pvpgn-stats/index.php")
?>
|
| |
|
|
|
|
|
|
|
|
для: helpdes
(08.01.2006 в 02:57)
| | это глюки библиотеки php под win. Из-за этого я перешел на "другие" сокеты (socket_create()) | |
|
|
|
|
автор: helpdes (08.01.2006 в 02:57) |
|
|
для: cheops
(08.01.2006 в 02:53)
| | Вычитал в указаных Вами ссылках и заменил на 1.0.
Никакого положительного результата. | |
|
|
|
|
|
|
|
для: helpdes
(08.01.2006 в 02:48)
| | Вообще сокеты достаточно медленная вещь, попробуйте строку
<?php
$out = "GET /pvpgn-stats/index.php HTTP/1.1\r\n";
?>
|
заменить на
<?php
$out = "GET /pvpgn-stats/index.php HTTP/1.0\r\n";
?>
|
| |
|
|
|
|
автор: helpdes (08.01.2006 в 02:48) |
|
|
для: helpdes
(08.01.2006 в 00:20)
| | Вот код, модифицировал при Вашй помощи так сказать.
Все работает, за что очень Вам благодарен, но есть одно НО.
Выставил таймаут как видите 1 секунду, а скрипт думает гараздо дольше, около 15-20.
В чем может быть подвох?
<?php
$fp = fsockopen("gamer.mysite.net.ua", 80, $errno, $errstr, 1);
if (!$fp)
{
$kod2 = "0";
} else {
$out = "GET /pvpgn-stats/index.php HTTP/1.1\r\n";
$out .= "Host: games.mysite.net.ua\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
$txt = '';
while (!feof($fp)) {
$txt .= fgets($fp, 8192);
}
$p1=strpos($txt,"Онлайн : <b>")+12;
$p2=strpos($txt,"Чат каналов")-15;
$kod2=substr($txt,$p1,$p2-$p1);
fclose($fp);
}
echo $kod2;
?>
|
Что ему не хватает ? :думает: | |
|
|
|
|
|
|
|
для: helpdes
(08.01.2006 в 02:00)
| | Тогда блок
<?php
if($f=@fopen('http://bla-bla.nets','r')){
$txt = '';
while (!feof($f)){
$txt .= fread($f, 8192);
}
?>
|
следует заменить на
<?php
<?php
$fp = fsockopen("games.mysite.net.ua", 80, $errno, $errstr, 30);
if (!$fp)
{
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /bnet/monitor.php HTTP/1.1\r\n";
$out .= "Host: games.mysite.net.ua\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
$txt = '';
while (!feof($fp)) {
$txt .= fgets($fp, 8192);
}
fclose($fp);
?>
|
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=600 | |
|
|
|
|
автор: helpdes (08.01.2006 в 02:00) |
|
|
для: cheops
(08.01.2006 в 01:53)
| | Дело в том, что сайт у меня в локальной сети, а адреес к нему таков:
games.mysite.net.ua/bnet/monitor.php | |
|
|
|
|
|
|
|
для: helpdes
(08.01.2006 в 01:24)
| | Да выдрать это не сложно, а как выглядит адрес страницы с этой информации? Для использования в fsockopen() его нужно поделить на хост и путь с параметрами... | |
|
|
|
|