| |
автор: stan067 (05.05.2006 в 17:31) |
|
| | Есть класс:
<?
class parse_icecast_info{
// connect to icecast and get the xml info.
function iceinfo($ip,$port,$user,$pass) {
$this->infila = array();
$this->temp=null;
$this->objcomp=null;
$this->ch = curl_init();
curl_setopt($this->ch,CURLOPT_URL,"http://".$ip.":".$port."/admin/stats");
curl_setopt($this->ch,CURLOPT_HEADER,false);
curl_setopt($this->ch,CURLOPT_HTTPAUTH,CURLAUTH_BASIC);
curl_setopt($this->ch,CURLOPT_USERPWD,$user.":".$pass);
curl_setopt($this->ch,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($this->ch,CURLOPT_RETURNTRANSFER, true);
$this->output=curl_exec($this->ch);
if (curl_errno($this->ch))
echo curl_error($this->ch);
curl_close($this->ch);
$this->parser = xml_parser_create();
xml_set_object($this->parser,$this);
xml_set_element_handler($this->parser,"inizio","fine");
xml_set_character_data_handler($this->parser,"componi");
xml_parse($this->parser,$this->output);
xml_parser_free($this->parser);
return $this->infila;
}
//functions to parse the icecast xml (inizio,componi,fine)
function inizio($parser,$name,$attr) {
if ($name == "SOURCE") {
// create nuovatemp empty
$this->temp->mount=$attr["MOUNT"];
}
else $this->objcomp = $name;
}
function componi($parser,$dato) {
if (is_null($this->objcomp) || is_null($this->temp))
return;
if ($this->objcomp == "AUDIO_INFO")
$this->temp == "audio_info";
elseif ($this->objcomp == "BITRATE")
$this->temp->bitrate=$dato;
elseif ($this->objcomp == "CHANNELS")
$this->temp->channels=$dato;
elseif ($this->objcomp == "LISTENERS")
$this->temp->listeners=$dato;
elseif ($this->objcomp == "LISTENURL")
$this->temp->listenurl=$dato;
elseif ($this->objcomp == "PUBLIC")
$this->temp->public=$dato;
elseif ($this->objcomp == "SAMPLERATE")
$this->temp->samplerate=$dato;
}
function fine($parser,$name) {
if ($name == "SOURCE") {
array_push($this->infila,$this->temp);
$this->temp=null;
}
else $this->objcomp=null;
}
}
?>
|
Как его вызывать ? | |
| |
|
|
| |
|
|
| |
для: stan067
(05.05.2006 в 17:31)
| | | $newinfo = new parse_icecast_info();
$arrayparse = $newinfo->iceinfo($ip,$port,$user,$pass);
arrayparse - содержит массив чего там должно распарсится. | |
| |
|
|
| |
автор: stan067 (05.05.2006 в 18:08) |
|
| |
для: stan067
(05.05.2006 в 17:31)
| | | Я созад файл, для вызова класса, в него вписал таки строки:
<?PHP
$ip = "192.168.11.8";
$port = "9000";
$user = "admin";
$pass = "hackme";
require_once('class_icecast.php');
$newinfo = new parse_icecast_info();
$arrayparse = $newinfo->iceinfo($ip,$port,$user,$pass);
print_r($arrayparse);
?>
|
При вызове скрипта мне вот что пишет:
Fatal error: Call to undefined function: curl_init() in D:\server\www\class_icecast.php on line 11 | |
| |
|
|
| |
|
|
| |
для: stan067
(05.05.2006 в 18:08)
| | | Нет функции такой в файле класса. Может она еще откуда берется, а может это версия у тебя какянить пхп не та. Щас гляну где она там. | |
| |
|
|
| |
|
|
| |
для: XPraptor
(05.05.2006 в 18:13)
| | | Да, эта функция самодельная. И ее нет в файле класса, значит должна быть в другом месте, ищи. | |
| |
|
|
| |
автор: stan067 (05.05.2006 в 18:18) |
|
| |
для: stan067
(05.05.2006 в 18:08)
| | | Я не понимаю о чем Вы....
Где искать и как исправить?
Подскажите пожалуйста! | |
| |
|
|
| |
|
|
| |
для: stan067
(05.05.2006 в 18:18)
| | | Тебе же говорят, нет функции curl_init() и ее остальных подклассов тоже. Она гдето в коде, не обязательно класса, а того файла, откуда ты взял пример, инклюдится. Смотри весь файл примера помимо класса и ищи где эта функция. Пройдись по всем инклюдам и рекьюирам и там посмотри её. | |
| |
|
|
| |
автор: stan067 (05.05.2006 в 18:28) |
|
| |
для: XPraptor
(05.05.2006 в 18:20)
| | | Я скачал этот класс со странички, которая находится по адресу:
http://www.phpclasses.org/browse/package/2433.html
Может сам скрипт требует PHP версии 5 и выше ?
http://ua2.php.net/manual/ru/function.curl-init.php
На сайте PHP написанно: (PHP 4 >= 4.0.2, PHP 5) | |
| |
|
|
| |
|
|
| |
для: stan067
(05.05.2006 в 18:28)
| | | Да, млина, стандартная функция с PHP 4.0.2 и выше. Похоже это расширение пхп и оно у тебя отсутствует. Замени пхп на полный и более новый. | |
| |
|
|
| |
|
|
| |
для: XPraptor
(05.05.2006 в 18:20)
| | | Функция curl_init() - это функция расширения cURL http://php.rinet.ru/manual/ru/ref.curl.php. Чтобы эта функция появилась, нужно подключить соответствующую библиотеку. | |
| |
|
|
| |
автор: stan067 (05.05.2006 в 19:16) |
|
| |
для: Саня
(05.05.2006 в 18:29)
| | | Подключил эту библиотеку, теперь нет ошибок, зато когда вызываю таким скриптом:
<?PHP
$ip = "192.168.11.8";
$port = "9000";
$user = "admin";
$pass = "hackme";
require_once('class_icecast.php');
$newinfo = new parse_icecast_info();
$arrayparse = $newinfo->iceinfo($ip,$port,$user,$pass);
print_r($arrayparse);
?>
|
Массив пуст... Может что не правильно делаю ? | |
| |
|
|
| |
|
|
| |
для: stan067
(05.05.2006 в 19:16)
| | | Может на сервере, куда идёт запрос, неполадки? | |
| |
|
|
| |
автор: stan067 (05.05.2006 в 20:46) |
|
| |
для: stan067
(05.05.2006 в 19:16)
| | | Нет, с сервером все впорядке!
Я смотрю через ipfw идут запросы на порт, но ответ на них почемуто не больше 700 - 800 байт, что на самом деле очень мало.
Думаю, что cheops поможет! Или кто-нибудь .... | |
| |
|
|
| |
|
|
| |
для: stan067
(05.05.2006 в 20:46)
| | | А что сервер то отвечает? Ты посомтри через HTTP анализатор или другим средством которое у тебя есть. | |
| |
|
|