|
|
|
| пытаюсь скачатькурс валют,а подключиться удалось тока к localhost'у Всеостальные сайты, даже www.mail.ru и прочие выдается ошибка
fopen(http://export.rbc.ru/free/cb.0/free.fcgi?period=DAILY&tickers=USD&lastdays=0&separator=;&data_format=BROWSER&header=0):
failed to open stream: Bad file descriptor in ...
какие советы будут ? | |
|
|
|
|
|
|
|
для: larush
(20.07.2007 в 14:39)
| | во первых у вас адрес не обрамлен кавычками. а во вторых нужно проверить настройки сервака а именно включен ли режим allow_url_fopen.. если нет то серверу запрещено открывать файлы с других серваков по сетевому протоколу. ну и конечно режим открытия файла нужно указать после адреса...
http://www.softtime.ru/dic/id_dic=188&id_group=6 | |
|
|
|
|
|
|
|
для: malish
(20.07.2007 в 14:44)
| | кавычки не помогают и потом вот пример используемого мной кода:
$date = date("d/m/Y");
$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date";
$fd = fopen($link, "r");
|
пробовал заключать дополнительно в одинарные и двойные- пофиг...
allow_url_fopen нашел только в php.ini , думал что на Апачи сначала искать - не правильно понял слово "сервер". параметр стоит в ON
Где еще покапать ? | |
|
|
|
|
|
|
|
для: larush
(20.07.2007 в 14:55)
| | вообщето вам нужна скорее всего ф-ция file_get_contents а не fopen.. именно она позвоялет получить содержимое удаленного файла именно вотм виде в котором видем мы то есть после обработки парсером | |
|
|
|
|
|
|
|
для: malish
(20.07.2007 в 15:09)
| | тоже-самое...
$handle = file_get_contents("http://www.mail.ru/", "r");
результат:
file_get_contents(http://www.mail.ru/): failed to open stream: Bad file descriptor | |
|
|
|
|
|
|
|
для: larush
(20.07.2007 в 15:13)
| |
$date = date("d/m/Y");
$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date";
$result = file_get_contents($link);
|
в результате в $result будет строка содержащая то что выдал вам удаленный файл
кстати после использования данной функции не надо дескриптор файла закрывать или открывать... | |
|
|
|
|
|
|
|
для: malish
(20.07.2007 в 15:16)
| | ответ :
file_get_contents(http://www.cbr.ru/scripts/XML_daily.asp?date_req=20/07/2007): failed to open stream: Bad file descriptor in z:\home\localhost\www\opex\common\curs.php on line 12 | |
|
|
|
|
|
|
|
для: larush
(20.07.2007 в 14:55)
| |
<?PHP
function get_value_content()
{
$data = file_get_contents("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y"));
return $data;
}
#Получаем текущие курсы валют
$content = get_value_content();
#Разбираем содержимое, при помощи регулярных выражений
$divider = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i";
preg_match_all($divider, $content, $currency, PREG_SET_ORDER);
#создаем массив валют
$NumCode = array("AUD"=>036,"GBR"=>826,"BYR"=>974,"DKK"=>208,"USD"=>840,"EUR"=>978,
"ISK"=>352,"KZT"=>398,"CAD"=>124,"CNY"=>156,"NOK"=>578,"XDR"=>960,
"SGD"=>702,"TRY"=>949,"UAH"=>980,"SEK"=>752,"CHF"=>756,"JPY"=>392);
#массив содержащий список валют подлежащих выводу на экран
$CharCode = array("EUR","USD");//валюта которая будет выведенна
#цикл вывода
foreach($currency as $data) {
for ($i=0;$i<count($CharCode);$i++) {
if($data[2] == $NumCode[$CharCode[$i]]) $valute[$CharCode[$i]] = $data[3]." - ".str_replace(",",".",$data[4]);
}
}
echo "<u>Курс валют предоставлен ЦБРФ:</u><br><br>";
#цикл вывода на экран
for ($i=0;$i<count($CharCode);$i++) {
echo $valute[$CharCode[$i]]."<br>";
}
?>
|
Вот держи готовый код получения курсов валют, с того же сайта откуда и ты сам пытаешься получить данные, 100% работает ... точнее работал когда я его для себя писал :) (давно не использовал достал из архива). | |
|
|
|
|
|
|
|
для: testdriver
(20.07.2007 в 15:19)
| | вопрос в том, что из скрипта не могу закачать ни одну страничку, а не в том как ее потом обработать...
Если эти ссылки втыкаю в адресную строку браузера, то результат получаю - нет работает :-)
А может иметь значение что ставил Денвер - типа у него где еще есть ограничения на выход в сеть ? | |
|
|
|
|
|
|
|
|
для: Futurer
(20.07.2007 в 16:05)
| | так что, никто не в силах мне помочь ? Почему ссылка на получение курса доллара в браузере работает и выводит информацию на экран, а все функции в скриптах зависают.. ? | |
|
|
|
|
|
|
|
для: larush
(30.07.2007 в 16:46)
| | а как вам помочь?
МЫ ж не умеем чужые мысли читать... может у вас фаирвол блочит коннекты на этот порт,а может провайдер.... а может апаче криво настроен... | |
|
|
|
|
|
|
|
для: testdriver
(20.07.2007 в 15:19)
| | #создаем массив валют
$NumCode = array("AUD"=>036,
PHP подумает, что Вы хотите задать число в восьмиричной системе счисления. Либо не пишите ноль, либо берите в кавычки. | |
|
|
|
|
|
|
|
для: Unkind
(30.07.2007 в 16:55)
| | да вопрос не в скрипте...С браузера запросы отправляются же...
про файервол и порт. А каким портом пользусь ? Я посмотрет в PHPINFO вроде все порты стоят на 80 | |
|
|
|
|
|
|
|
для: larush
(31.07.2007 в 09:18)
| | применяя fopen или file_get_contents, Вы так и не узнаете по какой причине Ваш запрос не выполнен. Это функции работы с файлами, а не функции доступа к документам на другом сервере. | |
|
|
|
|
|
|
|
для: larush
(20.07.2007 в 14:39)
| | попробуй через сокеты или curl | |
|
|
|
|
|
|
|
для: CrazyAngel
(31.07.2007 в 10:01)
| | устаонвил CURL
$ch = curl_init("http://www.mts.ru/");
$fp = fopen("example_homepage.txt", "w");
curl_setopt($ch, CURLOPT_PORT, 8080); пробовал и 80
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
У меня стоит OutPost, полез в журнал запрещенных соединений, смотрю Opera (ну люблю я ее) ломится на PROXY:8080 (прокся по этому порту открыта) и ошибка Пакет на закрытый порт. А как мне узнать на какаой порт идет запрос ? | |
|
|
|
|
|
|
|
для: larush
(31.07.2007 в 13:54)
| | У меня стоит OutPost,
на клиненте?
на сервере?
или это одно и то же?
Если последнее верно и если Вы хотите, чтобы Ваш скрипт работал как opera, то почему он соединяется не с прокси, а напрямую к http://www.mts.ru ? | |
|
|
|
|
|
|
|
для: Trianon
(31.07.2007 в 14:25)
| | я тестирую на локальной станции с запущеным Денвером, значит все тут и стоит.
мне как-бы без особой разницы как будет работать скрипт (напрямую или через прокси, второее логичнее), я хочу получить данные с некого сайта, взял к примеру МТС, если не указывать порт или указать 8080, как и настроен прокси, то в OutPoste возникает запрет на исходящее соединение по неразрешенному порту - PROXY:8080. Т.е. скрипт пытается вылезти во внешний мир, но по какому же порту, если не 8080 ? | |
|
|
|