Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> загрузка XML через сокеты, не работает 
:(
    Опции темы
AlexVern
Дата 17.7.2008, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 20.1.2008

Репутация: нет
Всего: нет



Исходные данные: Имеется скрипт,только вот что то не работает(
Кто чем может помогите пожалуйста, оч надо!


Код

$url = "/webservices/OzonWebSvc.asmx/ItemLst?CatalogID=string&PageNumber=string&PageItemCount=string&SortName=AUTHOR"; 
   $fp = fsockopen("www.ozon.ru",80,$errno,$errstr,500);
   if(!$fp){
    return false;
    //die("Error");
   }else{
     fputs($fp,"GET $url HTTP/1.1\r\nHost: www.ozon.ru\r\n\r\n");
     while(!feof($fp)){
      $res .= fgets($fp,1024);
     }
     fclose($fp);
    }
  
  
  file_put_contents('ozon.xml', $fp);

PM MAIL   Вверх
skyboy
Дата 17.7.2008, 15:18 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



как именно не работает?
какие сообщения об ошибках?
PM MAIL   Вверх
AlexVern
Дата 17.7.2008, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 20.1.2008

Репутация: нет
Всего: нет



а не работает вот так вот
Warning: file_put_contents(): 2 is not a valid stream resource in /var/www/web60/html/blablabla/xml.php on line 15
PM MAIL   Вверх
Glip
Дата 17.7.2008, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 2
Всего: 18



ну все правильно. fclose($fp);


--------------------
user posted image
PM MAIL   Вверх
Feldmarschall
Дата 17.7.2008, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Glip, ну, правильно-то правильно, но поможет ему эта информация врядли =)

Это сообщение отредактировал(а) Feldmarschall - 17.7.2008, 18:06
PM   Вверх
Glip
Дата 17.7.2008, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 2
Всего: 18



Feldmarschall, возможно и пропустил что-то.
но насколько я понял из кода, либо выходим по  return false; либо получаем fclose($fp);
и все это до вызова file_put_contents('ozon.xml', $fp);
т.к. ошибка на этом вызове, то не return.

Добавлено через 2 минуты и 39 секунд
а вообще странный какой-то скрипт, сначала что-то выгребает в $res. а потом пытается в этот же сокет просто положить какой-то xml


--------------------
user posted image
PM MAIL   Вверх
AlexVern
Дата 17.7.2008, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 20.1.2008

Репутация: нет
Всего: нет



За свое время отсутствия я существенно модернизировал это скрипт и теперь
он выглядит следующим образом

Код

<?php 
  $txt = file('catalog.txt');
  $fc=fopen('catalog.txt','r');
  foreach($txt as $line) {
   touch("$line.xml"); 
 $url = "/webservices/OzonWebSvc.asmx/ItemLst?CatalogID=$line&PageNumber=1&PageItemCount=10&SortName=AUTHOR"; 
   $fp = fsockopen('www.ozon.ru',80,$errno,$errstr,500);
   
   if(!$fp){
    return false;
    //die("Error");
   }else{
     fputs($fp,"GET $url HTTP/1.1\r\nHost: www.ozon.ru\r\n\r\n");
     while(!feof($fp)){
      $res .= fgets($fp,1024);
     }
     fclose($fp);
    }
  
  
 
        $ft = fopen("$line.xml", 'wb'); 
            fwrite($ft, $res);
            fclose($ft);
            }
    
  
  ?>

  
На данный момент он выполняет ту задачу которую я хотел, точнее если ему вручную задать нужный путь то он скачивает нужный мне xml.
Однако совершенству нет предела и поэтому я решил его модернизировать. 
Поскольку мне надо собрать много подобных xml  документов я вношу в txt документ номера дерикторий( их около300) по которым мне нужны xml документы. Далее запускаю скрипт и надеюсь что извлекаемое из текстовика значение присвоиться переменной $line  и то что будут создаваться файлы с этим именем и расширением xml и то что эта переменная будет вставляться в строку HTTP запроса, НОВОТЧУДО!
   Корректно создается только документ с последней переменной и файла. Все остальные создаются без расширения(не понять что за файлы) и там нет содержимого( может байт 15 в то время как нормальный должен весить 15кб).

Дружное сообщество программистов. в чем тут загвостка??? 

PM MAIL   Вверх
Glip
Дата 17.7.2008, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 2
Всего: 18



1. для чего вам $fc ?
2. не плохо бы пример содержимого catalog.txt
3. лично мне было бы удобнее с curl. (код ответа, тип документа, ....) но возможно это субъективно.


--------------------
user posted image
PM MAIL   Вверх
AlexVern
Дата 17.7.2008, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 20.1.2008

Репутация: нет
Всего: нет



Вообщем catalog.txt выглядит совсем не замысловато

1076076( Данные строки я пытаюсь вложить в переменную $line)
1091407
.....и т.д.
 
Возможно Ваш субъективный подход окажется 
практичнее моего. И если вы изложите мне свое мнение буду премного благодарен.

а зачем мне вот эта штука 
$fc??? а есть альтернатива??

Это сообщение отредактировал(а) AlexVern - 17.7.2008, 22:40
PM MAIL   Вверх
Fortop
Дата 17.7.2008, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



AlexVern, 
посмотри в мануале дополнительные параметры у функции file()

они решают твою проблему.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Glip
Дата 18.7.2008, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 2
Всего: 18



Цитата(AlexVern @  17.7.2008,  22:38 Найти цитируемый пост)
а зачем мне вот эта штука $fc??? а есть альтернатива??
 оно у вас дальше нигде не используется

Добавлено через 2 минуты и 56 секунд
на мой взгляд, всетаки желательно прроверять ответ сервера, перед тем как сохранять его в файл.

Добавлено через 4 минуты и 21 секунду
попробуйте еще добавить trim($line); после foreach. так, на всякий случай.


--------------------
user posted image
PM MAIL   Вверх
MuToGeN
Дата 19.7.2008, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Цитата(AlexVern @  17.7.2008,  15:23 Найти цитируемый пост)
2 is not a valid stream

Сразу скажу, что в тему особо внимательно не вчитывался. Просто эта фраза навела на мысль. 0 и 1 - stdin и stdout, 2 - stderr. Вы там часом не полноценного юниксового демона на пхп создаете? Если да, то помимо fork, setsid и еще раз fork надо так же переоткрыть 0, 1 и 2 потоки.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
Feldmarschall
Дата 19.7.2008, 18:31 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



MuToGeN, а стоило вчитаться. Поднял бы себе настроение. 
Ну, а так поднял нам =)
PM   Вверх
MuToGeN
Дата 20.7.2008, 10:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Цитата(Feldmarschall @  19.7.2008,  18:31 Найти цитируемый пост)
а стоило вчитаться

Вчитался. Я идиот, убейте меня кто-нибудь...
Цитата(Feldmarschall @  19.7.2008,  18:31 Найти цитируемый пост)
Ну, а так поднял нам =)

Рад стараться =)


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0543 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.