Помогите отладить скрипт

Тема в разделе "PHP", создана пользователем Sergyk, 23 ноя 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Sergyk

    Sergyk

    Регистр.:
    1 авг 2006
    Сообщения:
    270
    Симпатии:
    358
    Лежал у меня давно парсер гугла через прокси.
    Сейчас решил использовать, но столкнулся с ошибками.
    Помогите отладить плз.
    PHP:
    <?
    ini_set('display_errors',1);
    error_reporting(E_ALL);
    if (
    $qs){
    function 
    parsergoogle($qs){
    define("PROXY_FILE""proxy.txt");
    global 
    $file;
    $c=0;
    while(
    $c count($qs))
    {
    $q=trim($qs[$c]);
    print 
    "$q<br>";
    $q=urlencode($q);
    $start=0;
    while(
    $start 1000)
    {
    //check google
    $result3="";
    $ch curl_init();
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_URL"http://www.google.com/search?q=qwerty&hl=en&lr=&as_qdr=all&sa=N&filter=0");
    curl_setopt($chCURLOPT_PROXY,$proxy);
    curl_setopt($chCURLOPT_HEADER1);
    curl_setopt($chCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 5.01; Widows NT)");
    curl_setopt($chCURLOPT_REFERER"http://www.google.com/");
    curl_setopt($chCURLOPT_TIMEOUT,30);
    $result3 curl_exec($ch);
    curl_close($ch);
    if(
    substr_count($result3"qwerty")>2)
    {
    $proxy="";
    }
    else
    {
    $proxy_list=file("proxy.txt");
    $proxy=trim($proxy_list[rand(0count($proxy_list))]);
    }
    //check google
    while($start 1000)
    {
    $result="";
    $ch curl_init();
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_URL"http://www.google.com/search?q=$q&num=100&hl=en&lr=&as_qdr=all&start=$start&sa=N&filter=0");
    curl_setopt($chCURLOPT_PROXY,$proxy);
    curl_setopt($chCURLOPT_HEADER1);
    curl_setopt($chCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 5.01; Widows NT)");
    curl_setopt($chCURLOPT_REFERER"http://www.google.com/");
    curl_setopt($chCURLOPT_TIMEOUT,30);
    $result curl_exec($ch);
    curl_close($ch);
    //echo $result;
    $result_a=explode("<h3 class='r'>"$result);
    $result="";
    $a=1;
    //echo "COUNT:".count($result_a)."<br>";
    while($a count($result_a))
    {
    //echo $result_a[$a];
    //echo "A:$a<br>";
    preg_match_all('!<a href="(.*)" class=l!U'trim($result_a[$a]), $result1);
    $link=trim($result1[1][0]);
    if(
    count($result_a)<100 AND $a==count($result_a)-1)
    {
    $start="1000";
    }
    else
    {
    //echo $link."<br>";
    $url=trim($link);
    $file_out=fopen("$file","a");
    fwrite($file_out,$url."\r\n"); 
    fclose($file_out);
    }
    $a++;
    }
    if(
    count($result_a) < 2)
    {
    $start=1000;
    }
    $start=$start+100;
    }
    sleep(5);
    $c++;
    }
    }
    return(
    $c);
    }
    $qs=explode("\r\n",$qs);
    $a=parsergoogle ($qs);
    $open file($file); 
    $result array_unique ($open); 
    unlink ("$file");
       foreach(
    $result as $number
       { 
    $file_out=fopen("$file","a");
    fwrite($file_out,$number); 
    fclose($file_out);
       } 
    print 
    "<center><a href=$file class=t_stats4>Скачать результат</a></center>";
    }
    else{
    print 
    '
    Введите запросы.<br>
    <form method="POST" action="">
        <p><textarea rows="21" name="qs" cols="28"></textarea></p>
        <p>Сохранить в файл: <input type="text" name="file" size="20"></p>
        <p><input type="submit" value="Chek" name="B1"></p>
    </form>
    '
    ;
    }
    ?>
     
  2. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    Если приведешь пример ошибки, не придется нанимать экстрасенса. На 99% я уверен что регулярное выражение составлено неправильно.
     
  3. eugenel

    eugenel Постоялец

    Регистр.:
    3 авг 2008
    Сообщения:
    122
    Симпатии:
    14
    Или curl не установлен )
     
  4. Sergyk

    Sergyk

    Регистр.:
    1 авг 2006
    Сообщения:
    270
    Симпатии:
    358
    Curl установлен

    curlcURL support enabled
    cURL Information libcurl/7.16.0 OpenSSL/0.9.8g zlib/1.2.3

    ощибки такие выдает
    PHP:
    NoticeUndefined variableqs /class-google.php on line 4
    Notice
    Undefined variableproxy in /class-google.php on line 40
    Warning
    file(1.txt) [function.file]: failed to open streamNo such file or directory in /class-google.php on line 147

    Warning
    array_unique() [function.array-unique]: The argument should be an array in /class-google.php on line 148

    Warning
    unlink(12.txt) [function.unlink]: No such file or directory in /class-google.php on line 149

    Warning
    Invalid argument supplied for foreach() in /class-google.php on line 150

     
  5. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    афтар ты гонишь
    первые две ошибки - тотисы ... грубо говоря их можно проигнорировать ( для начала )
    ну а 3 и 5 - так там же написано что отсутствует файл или директория
    у тебя global $file; либо не инициализируется либо инициализируется неверно
    ну а остальные ошибки выскакивают из-за 3-4 ... - устранишь их устранятся и они
     
  6. B0nuse

    B0nuse Постоялец

    Регистр.:
    6 июн 2009
    Сообщения:
    105
    Симпатии:
    21
    В правильном программировании:
    Прежде чем открывать файл для чтения, нужно сначала удостовериться, что этот файл есть и доступен для чтения
    PHP:
    if (file_exists($file) && is_readable ($file)) {
    $fp fopen$file"r" ) or die ( "Не удалось открыть файл" );
    fclose ($fp);
    }
    Тоже самое для записи
    PHP:
    if (file_exists($file) && is_writable ($file)) {
    $fp fopen$file"а" ) or die ( "Не удалось открыть файл" );
    fclose ($fp);
    }
    Вот статья интересная на эту тему http://www.ibm.com/developerworks/ru/library/os-php-readfiles/
     
    Sergyk нравится это.
  7. enderxxx

    enderxxx Писатель

    Регистр.:
    25 мар 2009
    Сообщения:
    3
    Симпатии:
    0
    add this at the top:

    // Turn off all error reporting
    error_reporting(0);

    Добавлено через 2 минуты
    # PHP error reporting. supported values are given below.
    # 0 - Turn off all error reporting
    # 1 - Running errors
    # 2 - Running errors + notices
    # 3 - All errors except notices and warnings
    # 4 - All errors except notices
    # 5 - All errors
     
Статус темы:
Закрыта.