Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как вызвать класс?
 
 автор: 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_RETURNTRANSFERtrue);
        
        
$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;
    }

}

?>

Как его вызывать ?

   
 
 автор: XPraptor   (05.05.2006 в 17:37)   письмо автору
 
   для: 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

   
 
 автор: XPraptor   (05.05.2006 в 18:13)   письмо автору
 
   для: stan067   (05.05.2006 в 18:08)
 

Нет функции такой в файле класса. Может она еще откуда берется, а может это версия у тебя какянить пхп не та. Щас гляну где она там.

   
 
 автор: XPraptor   (05.05.2006 в 18:15)   письмо автору
 
   для: XPraptor   (05.05.2006 в 18:13)
 

Да, эта функция самодельная. И ее нет в файле класса, значит должна быть в другом месте, ищи.

   
 
 автор: stan067   (05.05.2006 в 18:18)
 
   для: stan067   (05.05.2006 в 18:08)
 

Я не понимаю о чем Вы....
Где искать и как исправить?
Подскажите пожалуйста!

   
 
 автор: XPraptor   (05.05.2006 в 18:20)   письмо автору
 
   для: 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)

   
 
 автор: XPraptor   (05.05.2006 в 18:33)   письмо автору
 
   для: stan067   (05.05.2006 в 18:28)
 

Да, млина, стандартная функция с PHP 4.0.2 и выше. Похоже это расширение пхп и оно у тебя отсутствует. Замени пхп на полный и более новый.

   
 
 автор: Саня   (05.05.2006 в 18:29)   письмо автору
 
   для: 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); 
?> 

Массив пуст... Может что не правильно делаю ?

   
 
 автор: Саня   (05.05.2006 в 19:54)   письмо автору
 
   для: stan067   (05.05.2006 в 19:16)
 

Может на сервере, куда идёт запрос, неполадки?

   
 
 автор: stan067   (05.05.2006 в 20:46)
 
   для: stan067   (05.05.2006 в 19:16)
 

Нет, с сервером все впорядке!
Я смотрю через ipfw идут запросы на порт, но ответ на них почемуто не больше 700 - 800 байт, что на самом деле очень мало.
Думаю, что cheops поможет! Или кто-нибудь ....

   
 
 автор: XPraptor   (06.05.2006 в 11:50)   письмо автору
 
   для: stan067   (05.05.2006 в 20:46)
 

А что сервер то отвечает? Ты посомтри через HTTP анализатор или другим средством которое у тебя есть.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования