[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. snet

    snet New Member

    Joined:
    19 Dec 2010
    Messages:
    61
    Likes Received:
    2
    Reputations:
    0
    Я вопспользовался библиотекой курл
    PHP:
    <?
    $title 'Семь';
    $search 'http://s.kinopoisk.ru/index.php?first=no&kp_query='.urlencode($title);
    $ch curl_init();

    curl_setopt($chCURLOPT_URL$search);
    curl_setopt($chCURLOPT_HEADER0);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_CONNECTTIMEOUT25);
    curl_setopt($chCURLOPT_USERAGENT'mazzila');
    $data curl_exec($ch);
    curl_close($ch);
    echo 
    $data;
    ?>
     
  2. Axel G

    Axel G New Member

    Joined:
    28 Jan 2009
    Messages:
    86
    Likes Received:
    3
    Reputations:
    3
    snet, не, наф курл, нужно через сокеты сделать как-то = )
     
  3. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Axel G возвращаемый текст вам намекает, что вместо страницы 'http://s.kinopoisk.ru/index.php?first=no&kp_query='.urlencode($title)

    Нужно обращаться к: http://www.kinopoisk.ru/index.php?first=no&kp_query=%D1%E5%EC%FC
     
    _________________________
  4. Axel G

    Axel G New Member

    Joined:
    28 Jan 2009
    Messages:
    86
    Likes Received:
    3
    Reputations:
    3
    Gifts, хех, это я пробовал, тогда вылетает другая ошибка и получается замкнутый круг.

    http://www.kinopoisk.ru/index.php?first=no&kp_query='.urlencode($title)

    HTML:
    HTTP/1.1 302 Moved Temporarily Server: nginx/0.7.62 Date: Sat, 15 Jan 2011 22:40:14 GMT Content-Type: text/html Content-Length: 161 Connection: close Location: http://s.kinopoisk.ru/index.php?first=no&kp_query=%D1%E5%EC%FC
    302 Found
    
     
  5. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Axel G проблема в том, что s.kinopoisk.ru живет на другом сервере относительно www.kinopoisk.ru, поэтому и подключаться надо к нужному:
    PHP:
     $title 'Семь';
    $search 'http://s.kinopoisk.ru/index.php?first=no&kp_query='.urlencode($title);

    $REF 'http://kinopoisk.ru/';
    $KP 's.kinopoisk.ru';
    $HOST 's.kinopoisk.ru';
    $fp fsockopen($KP80);
    if (!
    $fp) { 
        die(
    'Не могу получить данные с КиноПоиск.Ru');
    } else {
        
    $head "GET $search HTTP/1.1\r\nHost: $HOST\r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\r\nReferer: $REF\r\nConnection: Close\r\n\r\n";
        
    fputs($fp$head);
        while (!
    feof($fp)) $tmp .= fgets($fp,1024);
    }
    fclose ($fp);
    iconv('cp1251''utf-8'$tmp);
    echo 
    $tmp;  
     
    _________________________
    1 person likes this.
  6. 0х00

    0х00 New Member

    Joined:
    3 Nov 2010
    Messages:
    7
    Likes Received:
    2
    Reputations:
    0
    Подскажите по mod_rewrite

    Скрипты движка находятся в директории /cgi-bin/
    Необходимо создать правило для всех запросов что то вроде

    /script.pl => /cgi-bin/script.pl

    а так же подскажите, как можно сделать исключение для общего плавила. а именно обращение к одной дирректории не перенаправлять. Спасибо.
     
  7. -=Zhenek=-

    -=Zhenek=- Elder - Старейшина

    Joined:
    31 Dec 2007
    Messages:
    271
    Likes Received:
    77
    Reputations:
    1
    У меня такой вопросик.. во время написания совершил ошибку и написал

    PHP:
    $text_v str_replace ("%RAND_TIME%",date(rand(1,24).":".rand(10,59),$text_v); 
    При тесте PHP не выдал ошибку а сразу начал глючить апач как я понял. Выдавать опере,что скрипт или хост не доступен..

    Почему? поидее пхп должен бы ругнуться,что мол бред и нарушен синтаксис... О-о

    UPD походу это касаемо только джино( он на все ошибки стар реагировать отваливанием всего сайта
     
    #17407 -=Zhenek=-, 16 Jan 2011
    Last edited: 16 Jan 2011
  8. -slim-

    -slim- Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    99
    Likes Received:
    12
    Reputations:
    0
    есть таблица
    id name surname

    например сто записей
    Иванов повторяется 5 раз, Петров 4 раз и тд (неважно, есть повторы фамилий)
    Мне надо, чтоб вытаскивало всех авторов, только по одному разу, как сделать?
    То есть, вытаскивало всех авторов, без повтора
     
  9. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    -slim-

    SELECT * FROM authors GROUP BY surname
     
    1 person likes this.
  10. ULTER

    ULTER New Member

    Joined:
    16 Jan 2011
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    я учил учил и не чему не научился не понимаю вобще в языках програмирования
     
  11. Andres

    Andres Elder - Старейшина

    Joined:
    4 Apr 2008
    Messages:
    320
    Likes Received:
    119
    Reputations:
    0
    Мне нечего тебе ответить
     
  12. Kusto

    Kusto Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    886
    Likes Received:
    678
    Reputations:
    510
    нифига не понимаю почему когда стараешся делать по правилам- нифига не получается... т е пример есть у меня файл с лямом емайлов, почему array_chunk() нифига не работает с большим размером файла т е
    PHP:
    <?php 
         
                $num
    '5'// количество частей на сколько разбить файл 
                

    $file=file("email.txt");
    $cownt=array_chunk($file,$num );
    $massiv=$cownt[0];//попробуем вывести первую часть
    foreach ( $massiv as $k=>$v )
    {
      echo 
    $v<br>";
      
    flush();
    };


    ?>

    постарался только первую часть вывести и
    здесь выбивает ошибку только при большом размере файла, ну а если подставляеш костыли
    то все работает прекрасно
    т е так

    PHP:
    <?php 
         
                $num
    '5'// количество частей на сколько разбить файл 
                

    $file=file("email.txt");
    $sizecount($file);
    $cownt=ceil($size/$num) ;//количество строк записи в файл

    $m='1';

    for (
    $x=1$x<=$num$x++) 
    {
    $part='part'.$x;

    $f_1 fopen("$part.txt""w"); 
    for (
    $i=0$i<=$cownt$i++) 
    {
    $col=rtrim($file[$m],"\r\n");
    fwrite($f_1,"$col\r\n" );

    $m++;
    }
    fclose($f_1);
    $m=$cownt*$x;

    }

    ?>
     
    #17412 Kusto, 17 Jan 2011
    Last edited: 17 Jan 2011
  13. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Kusto это не array_chunk не работает, это интерпретатор падает из-за нехватки памяти. И кто вам вообще сказал, что подгружать большой файл целиком, а потом чанком делать его копию - это по правилам? Можете, конечно, увеличить в php.ini memory_limit, но лучше пользоваться вторым вариантом, правда и он как-то кривоват

    Я бы решал как-то так:
    PHP:
    $num5// количество частей на сколько разбить файл 
                
    $f fopen('emails.txt''rb');

    $count 0;
    while(
    fgets($f4096)) $count++;
    fseek($f0);

    $chunk_size ceil($count $num);
    for (
    $i=0;$i<$num;$i++)
    {
        
    $f_out fopen('part'.$i.'.txt','wb');
        for (
    $row=0;$row<$chunk_size;$row++)
            
    fwrite($f_outfgets($f4096));
        
    fclose($f_out);
    }
     
    _________________________
    #17413 Gifts, 17 Jan 2011
    Last edited: 17 Jan 2011
    1 person likes this.
  14. Kusto

    Kusto Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    886
    Likes Received:
    678
    Reputations:
    510
    дело в том что это часть небольшой прожки и майлы надо разбивать на количество переменных которые создаются в процессе программы т е чтоб каждая переменная отвечала за свой кусок емайлов в программе- побитно разбить- нефиг делать, только он режет первый и последний майл в файле- поэтому и извращаюсь, кроме того я хтасесом немного расширил и время загрузки файла и соответственно размер, вобщем если оставлю второй вариант и скрипт захватят враги я надеюсь они не будут сильно смеяться? :)
    P.S. Gifts - большое спасибо, все работает
     
    #17414 Kusto, 17 Jan 2011
    Last edited: 17 Jan 2011
    1 person likes this.
  15. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Kusto что значит побитно? http://php.net/fgets забирает ровно строку. Лучше вообще не использовать функцию file() и file_get_contents(), если предполагается использовать большие файлы, всегда можно обойтись и без них. Например, если не так важно, чтобы emailы шли по порядку, а главное их разделить, то можно вообще обойтись одним проходом и одним файлом
     
    _________________________
    #17415 Gifts, 17 Jan 2011
    Last edited: 17 Jan 2011
  16. Kusto

    Kusto Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    886
    Likes Received:
    678
    Reputations:
    510
    твой вариант прекрасно работает, ну а насчет побитно я имел ввиду такое
    PHP:
    <?php  
    $num
    ='5';// количество частей на сколько разбить файл 
    $f_input fopen("my.txt""r");  
    $part_size filesize("my.txt") /$num ;  
    for( 
    $i 1$i <=$num$i++){ 
    $part='part'.$i
    $
    $part  fread($f_input$part_size);  
    $f_1 'f_1'.$i
    $
    $f_1 fopen("part$i.txt""w");  
    fwrite($$f_1,$$part );  
    fclose($$f_1);  
    }  
    fclose($f_input);  

    ?>
    насчет file() и file_get_contents(),- полностью согласен, не раз уже на этом спотыкался
     
  17. Semyon

    Semyon New Member

    Joined:
    6 Jan 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Есть масив с некоторым количеством элементов. Как сделать функцию которая будет возвращать заданное количество случайных элементов из массива неповторяющихся? Типа есть массив скажем 5, 1, 11, 22, 8
    я пишу типа get(5) и получаю все элементы массива, а если напишу get(4) то случайные 4 элемента из массива (например 5 22 8 1 11, но чтобы не могло выпасть типа 5 22 8 8 1). И надо как то оптимально сделать так чтобы не гонять лишние циклы при больших масивах (если будет выпадать уже выбраный из масива элемент)
     
  18. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    Semyon
    PHP:
    <?php
    function get($data,$count) {
        
    shuffle($data);
        return 
    array_slice($data,0,$count);
    }
    $my_array range(1,20); // тут я создал массив 1,2,3,4 .. 20
    print_r(get($my_array,5)); 
    ?>
    так?
     
    #17418 LStr1ke, 17 Jan 2011
    Last edited: 17 Jan 2011
  19. narviss

    narviss New Member

    Joined:
    1 Aug 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    xss :D
     
    #17419 narviss, 17 Jan 2011
    Last edited: 17 Jan 2011
  20. L E X X

    L E X X Member

    Joined:
    20 Nov 2008
    Messages:
    0
    Likes Received:
    8
    Reputations:
    1
    Всем день добрый...
    Вопрос такой...
    На дипломный проект предложили сделать почту для колледжа...
    Я в принципе не против - но вот знать бы ещё что и куда...
    Все знания остановились на создании фейков...
    Реально ли до июня выучить необходимое и создать? Желание есть само собой...
    На чём писать и что учить?

    Есть другой вариант - придумать что то другое... но с идеями я страдаю...
     
    1 person likes this.
Thread Status:
Not open for further replies.