Вот ещё одна ошибка ![]()
<?php $url = 'http://b2bcontext.ru/partner/rubricator?h=b2b.selfip.org'; $xml = file_get_contents($url); print_r ($xml); ?>
Fatal error: Call to undefined function file_get_content() in /volume1/web/test3.php on line 7
Вот ещё одна ошибка ![]()
<?php $url = 'http://b2bcontext.ru/partner/rubricator?h=b2b.selfip.org'; $xml = file_get_contents($url); print_r ($xml); ?>
Fatal error: Call to undefined function file_get_content() in /volume1/web/test3.php on line 7
Правильно делает, что пишет ошибку
Для работы функции file_get_contents должен быть включён параметр allow_url_fopen
Начни с изучения PHP ![]()
WWW.ZEOS.IN
Взаимное предложение по началу изучения РНР ![]()
Если бы дело было в allow_url_fopen, то в ошибке писалось бы типа такого
file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: non-recoverable failure in name resolution
В моём случае функция вообще не определена ![]()
Сделайте как я написал и убедитесь ![]()
allow_url_fopen по умолчанию стоит on
Собственно file_get_contents использует скрипт партнерской программы, админы уточнили, что PHP должен быть собран с поддержкой XML (функции xml_pars er_create, xml_parser_set_option, xml_parse_into_struct, xml_parser_free).
Вот здесь http://phpclub.ru/manrus/f/ref.xml.html пишут:
Это расширение использует библиотеку expat. Просто сконфигурируйте PHP с использованием --with-xml (без дополнительного пути), и он будет автоматически использовать библиотеку expat, встроенную в Apache.
Проверил у себя: expat установлен, PHP сконфигурирован без использования --with-xml
Собственно возникает вопрос, как сконфигурировать PHP с --with-xml?
Сделайте как я написал и убедитесь![]()
Вопрос такой, а Вы пробовали запустить мой код у себя на серваке? Там ничего такого особенного, загружается данные с партнерки в виде xml.
Ваш код у меня выводит такое:
<?xml version="1.0" encoding="windows-1251"?> <!DOCTYPE otrs [ <!ELEMENT subotr EMPTY> <!ATTLIST subotr href CDATA #REQUIRED header CDATA #REQUIRED tender_count NMTOKEN #REQUIRED> <!ELEMENT subotrs (subotr*)> <!ELEMENT column (subotrs)> <!ATTLIST column num NMTOKEN #REQUIRED> <!ELEMENT columns (column*)> <!ELEMENT otr (columns)> <!ATTLIST otr href CDATA #REQUIRED header CDATA #REQUIRED> <!ELEMENT otrs (otr*)> ]><otrs> <otr header="Электротехника<script src='http://b2bcontext.ru/service/check_location.pl?id=599b9c7d841834634a2b01'></script>" href="http://b2bcontext.ru/partner/rubricator.pl?otr=29&h=b2b.selfip.org"> <columns> <column num="1"> <subotrs> <subotr header="Аккумуляторы, батареи, первичные гальванические элементы" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=450" tender_count="70" /> <subotr header="Вентиляторы" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=587" tender_count="22" /> <subotr header="Высоковольтная аппаратура" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=451" tender_count="23" /> <subotr header="Другое" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=427" tender_count="148" /> <subotr header="Изделия из стекловолокна" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=584" tender_count="3" /> <subotr header="Измерительная техника" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=420" tender_count="59" /> <subotr header="Источники питания" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=422" tender_count="26" /> <subotr header="Кабельно-проводниковая продукция" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=452" tender_count="737" /> <subotr header="Коммутационные изделия" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=561" tender_count="222" /> <subotr header="Контакторы, пускатели" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=423" tender_count="82" /> <subotr header="Контроллеры" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=424" tender_count="12" /> <subotr header="Контрольно-измерительные приборы (КИП)" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=453" tender_count="274" /> <subotr header="Нагревательное оборудование" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=418" tender_count="23" /> <subotr header="Насосы, компрессоры и их комплектующие" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=462" tender_count="273" /> <subotr header="Низковольтная аппаратура (НВА)" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=454" tender_count="111" /> <subotr header="Оборудование б/у" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=426" tender_count="3" /> <subotr header="Осветительное оборудование" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=419" tender_count="105" /> <subotr header="Паяльное оборудование" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=564" tender_count="3" /> <subotr header="Приборы полупроводниковые" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=570" tender_count="18" /> <subotr header="Разное оборудование, комплектующие, cырье и материалы" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=455" tender_count="700" /> <subotr header="Регуляторы давления" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=565" tender_count="6" /> <subotr header="Ремонт/монтаж/ профилактические работы" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=421" tender_count="608" /> <subotr header="Светотехническая продукция" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=456" tender_count="66" /> <subotr header="Связь и телекоммуникации" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=457" tender_count="15" /> <subotr header="Силовые конденсаторы и конденсаторные установки" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=458" tender_count="13" /> <subotr header="Трансформаторы, трансформаторные подстанции и реакторы" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=459" tender_count="221" /> <subotr header="Ультразвуковое оборудование" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=460" tender_count="1" /> <subotr header="Электрические машины и оборудование" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=461" tender_count="53" /> <subotr header="Электрогенераторы/ Электродвигатели" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=417" tender_count="132" /> <subotr header="Электроды" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=507" tender_count="39" /> <subotr header="Электроизоляционные материалы" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=463" tender_count="26" /> <subotr header="Электроинструмент и оборудование" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=464" tender_count="16" /> <subotr header="Электрокерамические изделия. Изоляторы" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=465" tender_count="43" /> <subotr header="Электромонтажная арматура и инструмент" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=466" tender_count="2" /> <subotr header="Электромонтажные работы и услуги" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=467" tender_count="110" /> <subotr header="Электронные компоненты. Электроника" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=468" tender_count="47" /> <subotr header="Электроремонтное и испытательное оборудование" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=469" tender_count="3" /> <subotr header="Электросварочное оборудование" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=470" tender_count="18" /> <subotr header="Электроснабжение. Генераторные установки. Электростанции" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=471" tender_count="39" /> <subotr header="Электротермическое, нагревательное и отопительное оборудование" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=472" tender_count="17" /> <subotr header="Электротехника – кабели" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=425" tender_count="25" /> <subotr header="Электроустановочные изделия и инструменты<script src='http://b2bcontext.ru/service/check_location.pl?id=599b9c7d841834634a2b01'></script>" href="http://b2bcontext.ru/partner/gettenderlist?h=b2b.selfip.org&id=560" tender_count="35" /> </subotrs> </column> </columns> </otr> </otrs>
Нашёл для себя решение..
<?php
function file_get_contents($filename)
{
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);
return $contents;
}
$url = 'http://b2bcontext.ru/partner/rubricator?h=b2b.selfip.org';
$xml = file_get_contents($url);
print_r ($xml);
?>
не совсем то конечно, что хотелось бы.. но работает ![]()
Написал для тебя четыре способа как вытащить инфу с нужного тебе сайта:
<?php // Первый способ. $a = file ( "http://ya.ru/" ); print_r ( $a ); // // Второй способ. $b = fopen ( "http://ya.ru/", "r" ); echo fgets ( $b, 20480 ); // // Третий способ. $c = file_get_contents ( "http://ya.ru/" ); echo $c; // // Четвертый способ. ob_start (); $d = curl_init (); curl_setopt ( $d, CURLOPT_URL, "http://ya.ru/" ); curl_setopt ( $d, CURLOPT_USERAGENT, "Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.2.15 Version/10.10" ); curl_exec ( $d ); curl_close ( $d ); $d = ob_get_contents (); ob_end_clean(); echo $d; // ?>
Способы 1,2,3 будут работать только в том случае, если в php.ini параметр allow_url_fopen имеет значение On
Четвертый способ работает даже при выключеном allow_url_fopen
![]()
Уточнение - способ №2 в указанном варианте прочитает максимум 10 КБ, правильнее будет так
$f=fopen("http://ya.ru/",'r');
$b=$block_size=1024;
$s='';
while($block_size==$b){
$s.=$t=fread($f,$block_size);
$b=strlen($t);
};
fclose($f);
Результат будет в $s
Вариант №4 требует curl
Уточнение - способ №2 в указанном варианте прочитает максимум 10 КБ, правильнее будет так
Проще указать размер и всё ![]()
echo fgets ( $b, 20480 );
заменить на:
echo fgets ( $b, 10 * 1024 * 1024 );
Вот уже и 10 мб
У этого способа конечно лимит, размер оперативки.
Естественно. В Synology устройствах он уже присутствует.Вариант №4 требует curl
Проще указать размер и всё![]()
Проще оно тогда, когда сервер отдает размер в хедере content-length. А вот когда нет - обломается жестоко.
Но вообще - надо выбирать решение по ситуации. Коли хостинг на DS, ресурсы достаточно лимитированы, поэтому их надо беречь.
Ваш код у меня так и не заработал ![]()
Вот правильный и простой код:
$fopen = fopen ( "http://ya.ru/", 'r' ); while ( ! feof ( $fopen ) ) $page .= fgets ( $fopen, 4096 ); fclose ( $fopen );
Потом работаем с переменной $page
Ваш код у меня так и не заработал![]()
Ессно не заработал, я результирующую переменную забыл, а вы не вставили ![]()
Сейчас пост выше исправил, работает отлично.
Ваш вариант (с fgets) к слову не идеален т.к. fgets читает строку и теоретически может вернуть меньше чем буфер, что породит еще одну итерацию, да и не факт что не потеряет перенос строки. Тут как раз fread правильнее.
Ну и feof - функция с рядом оговорок для применения с TCP, так что тоже поаккуратнее.