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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Новостной граббер, проблемы работы на FreeBSD 
:(
    Опции темы
Icen
Дата 8.7.2008, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте, господа программисты. 
Я написал новостной граббер. Суть его работы такова, он авторизуется на сайте, считывает заголовки новостей, затем считывает сами новости, затем все новые новости отправляет на указанный адрес. Но вот в чём собственно проблема, под Denwer-ом нормально новости отправляются, под FreeBSD приходят пустые новости. Ссылки получаются нормальные. Вот исходный код:

Код

<? 
$EMail = "[email protected]"; 
$MaxReload = 100; 

//********************************* rosan.su *********************************** 
$rLogin = "qwerty"; 
$rPassword = "12345"; 
$rHost = "http://www.rosan.su/dealers/"; 
$rAuthString = "login=$rLogin&password=$rPassword"; 
$rAuthPage = "http://www.rosan.su/dealers/auth.php"; 
$rParseString = "#<a href='(.+?)' class=\"linkb\">(.+?)</a>.*?<span class=\"text\">(.+?)</span>#is"; 
$rLinkIndex = 1; 
$rFileName = "rosan.dat"; 
//****************************************************************************** 

//******************************* awm-trade.ru ********************************* 
$aLogin = "qwerty"; 
$aPassword = "12345"; 
$aHost = "http://www.awm-trade.ru"; 
$aAuthString = "login=$aLogin&password=$aPassword&auth=войти"; 
$aAuthPage = "http://awm-trade.ru/index.php5?module=users&class=auth"; 
$aParseString = "#<a.*?class=\"newsDealersDate\">(.+?)</a>.*?<a href=\"(.+?)\" class=\"headerDealersNews\">(.+?)</a>#is"; 
$aLinkIndex = 2; 
$aFileName = "awm-trade.dat"; 
//****************************************************************************** 

function EmptyMass($Mass) 
{ 
    for($i=1;$i<=3;$i++) 
        foreach($Mass[$i] as $key=> $value) 
            if($Mass[$i][$key]!="") 
                return 1; 
    return 0; 
} 

function LoadHeadingsNews($AuthPage,$AuthString) 
{ 
    $SessID = str_replace('\\', '/', dirname(__FILE__)) . 'sessid.txt'; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,$AuthPage); 
    curl_setopt($ch, CURLOPT_FAILONERROR, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 3); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    if($AuthString) 
    { 
        curl_setopt($ch, CURLOPT_POSTFIELDS, $AuthString); 
        echo "> Загружаю старницу загаловков новостей;<br>"; 
    } 
    else echo "> Загружаю старницу новостей;<br>"; 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $SessID); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $SessID); 
    curl_setopt($ch, CURLOPT_NOBODY, 0); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    $NewsPage = curl_exec($ch); 
    curl_close($ch); 

    return $NewsPage; 
} 

function LoadNews($Host,$AuthPage,$AuthString,$ParseString,$LinkIndex,$FileName) 
{ 
    global $MaxReload, $Headers, $EMail; 
    preg_match_all($ParseString,LoadHeadingsNews($AuthPage,$AuthString),$OuterMass); 
    unset($OuterMass[0]); 
    echo "<b>> Выбираю данные со станицы заголовков новостей в массив;<br></b>"; 

    if(!EmptyMass($OuterMass)) 
    { 
        echo "<b>> Данные не обнаружены, перезагружаю страницу заголовков новостей;<br><br></b>"; 
        if($MaxReload) 
        { 
            sleep(1); 
            $MaxReload--; 
            LoadNews($Host,$AuthPage,$AuthString,$ParseString,$LinkIndex,$FileName); 
        } 
        return; 
    } 

    $FileDisc = fopen($FileName, "r") or die("<b>> Не могу найти файл $FileName;<br></b>"); 
    if(filesize($FileName)) 
    { 
        $OldNews = fread($FileDisc, filesize($FileName)); 
        echo "<b>> Считал данные из временного файла;<br></b>"; 
    } 
    fclose($FileDisc); 

    echo "<b>> Ищу последнюю отправленную новость;<br></b>"; 

    for($key=0;$key<count($OuterMass[$LinkIndex]);$key++) 
        if(substr_count($OldNews, $OuterMass[$LinkIndex][$key])) 
            break; 
    if($key) 
    { 
        echo "<b>> Записываю текущую последнюю новость;<br></b>"; 
        $FileDisc = fopen($FileName, "w") or die("<b>> Не могу найти файл $FileName;<br></b>"); 
        fputs($FileDisc,$OuterMass[$LinkIndex][0]); 
        fclose($FileDisc); 

    } 
    else 
        echo "<b>> Новых новостей не найдено;<br></b>"; 

    $Headers  = "Content-type: text/html; charset=windows-1251 \r\nFrom: News from $Host \r\nBcc: $email \r\n"; 

    if($key) 
    { 
        echo "<b>> Отправляю письма с новостями;<br></b>"; 
        while($key--) 
        { 
            $Mail = LoadHeadingsNews($Host."".$OuterMass[$LinkIndex][$key],0); 
            $Mail = str_replace("a href=\"", "a href=\"$Host", $Mail); 
            $Mail = str_replace("a href='", "a href='$Host", $Mail); 
            mail($EMail,"Новости с $Host",$Mail,$Headers); 
        } 
    } 
     echo "<b>> Загрузка новостей с $Host, завершена;</b><br><br>"; 
} 

LoadNews($rHost,$rAuthPage,$rAuthString,$rParseString,$rLinkIndex,$rFileName); 
LoadNews($aHost,$aAuthPage,$aAuthString,$aParseString,$aLinkIndex,$aFileName); 
?>


Буду очень благодарен за Ваши советы и предложения! Борюсь с этим уже два дня, пока без результатно smile
PM MAIL   Вверх
MoLeX
Дата 11.7.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


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

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




Модератор: Сообщение скрыто.



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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