[Help] Работа с .txt файлов.

Discussion in 'PHP' started by Deathdreams, 6 Nov 2009.

  1. Deathdreams

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

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Вообщем суть такова:

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

    Пытался и array_ search тут использовать и через current, next,end - не получилось.Нужно чтобы было так:

    первый вызов: [0] прокси в массиве

    Последующий вызов : текщий + 1

    И самый важный момент: Если прокси последняя в массиве, то начать с самого начала. (с [0] значения в массиве).

    Помогите плиз :(
     
    3 people like this.
  2. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    800
    Likes Received:
    145
    Reputations:
    73
    Покажи кусок такого файла с прокси.
    функция $arr = file() не подходит?
    там каждая строка файла будет значением массива $arr.
    $arr[0] - первая строка =\
     
  3. Deathdreams

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

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    PHP:

    $proxys 
    = 'proxy.txt';

    $proxies = file($proxys)

    $info = file('lalala.txt'); //тут содержится некая инфа

    for($i=0; $i < count($info); $i++){

    list(
    $proxy, $port) = explode(":", [ЗДЕСЬ ТЕКУЩАЯ ПРОКСЯ]);

    //здесь операция с прокси 

                                                             
    }

    В итоге нужна функция или не знаю.
    Нужно осуществить порядковый выбор прокси из файла.
     
  4. Deathdreams

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

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    1 раз - первая прокси

    2 раз - вторая прокси

    3 раз - третья прокси

    А потом проверка, если прокси последняя , то после её использования взять опять первую прокси
     
  5. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Deathdreams
    PHP:
    $proxies = file($proxy);
    $c = count($proxies);
    $i = 0;
    while (
    $i < 100) // на всякий случай, остановка после 100 итераций
    {
    list(
    $addr,$port) = explode(":",trim($proxies[$i++ % $c]));
    // делаем что хотим с проксей
    }
     
    _________________________
    1 person likes this.
  6. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    800
    Likes Received:
    145
    Reputations:
    73
    PHP:
    <?php
    function Go()
    {    
        
    $proxies = file("proxies.txt");
        
    $size =  count($proxies);
        for(
    $i=0; $i < $size ; $i++)
        {
        list(
    $proxy, $port) = explode(":", $proxies[$i]);
        echo 
    "IP:".$proxy." Port:".$port."<br>";
        }
        if (
    $i == $size) { echo "End File on line $i. Restart...<br>"; Go(); }
    }

    Go();
    ?>
     
    1 person likes this.
  7. Deathdreams

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

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    LStr1ke
    Не проверял, но всё равно не подходит немного

    Gifts читает мои мысли :)
     
  8. login999

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

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    <Ла-ла-ла>
    Тут пробегал я.
    Язык бы не мешало указывать.
    Под Python у меня есть реализация.
    Суть ее такова:
    1. Набиваем массив проксями
    2. Вызываем метод .pop(0) (Забирает первую проксю из массива и удаляет ее оттуда)
    3. Проверяем проксю, и если она валидная, то добавляем ее методом .append() (Добавляет проксю в конец массива)
    4. На всём этом стоит обработчик ошибки IndexError (возбуждаться будет тогда, когда нулевого элемента массива не существует), и в таком случае возвращается значение None

    В итоге имеем :
    Когда из основного цикла вызывается метод получения прокси, то прокси берутся последовательно, потом проверяется, если валидная то добавляется в конец массива, и возвращается.
    В основном цикле же при получении прокси делается только проверка на то, чтобы значение прокси не равнялось None, если оно равняется None, то происходит завершение главного цикла.
    </Ла-ла-ла>
    P.S. Кому интересно, могу скинуть в личку...
     
    1 person likes this.
  9. Deathdreams

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

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    login999

    По посту #3 (моему) не видно, что это PHP? :)
     
  10. login999

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

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Не, ну я заходил в тему "[Help] Работа с .txt файлов", и даже среди первого поста не было ни слова о том, что это пхп. :) Но это так, придирки.
    Посмотри алгоритм, сможешь ли его на пхп реализовать. Удобно блин оно очень, я его в отдельный класс вынес да и все - никаких проблем, все красиво и функционально, и пох что это смесь бульдога с носорогом :)
    Суть его в том, что обходишься вообще без цикла даже + проксики получаешь только валидные
     
    1 person likes this.
  11. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Что-нить типа
    PHP:
    <?php
      $pass 
    = file ('pass.txt');
      
    $proxy = file ('proxy.txt');
      
    $proxy_count = count ($proxy);
      
    $p = 0;
      foreach (
    $pass as $passwd) {
        
    $passwd = trim ($passwd);
        if (
    $p == $proxy_count)
          
    $p = 0;
        
    // do something
        
    $p++;
      }
    ?>
     
    1 person likes this.
  12. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    Помоему вы все делаете не ТО что просит Автор, как я понял ему нужно пройти цикл проксей и потом вернутся в начало, вот накатал по быстрому маленький пример:
    PHP:
    <?php
    set_time_limit
    (0);

    if(
    file_exists('proxy.txt') && filesize('proxy.txt') > 0)
    {
        
    $proxylist = file('proxy.txt');
        
    $proxylist = array_map('trim',$proxylist);
        
    $use_proxy = TRUE;
        
    $proxy_number = 0;
    } else {
        
    $use_proxy = FALSE;
    }


    for (
    $i=0;$i<=5;$i++) {
    get_page('http://2ip.ru/');
    }




    function 
    get_page($url)
    {
    global 
    $use_proxy;
    global 
    $proxylist;
    global 
    $proxy_number;

    $ch = curl_init($url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, 0);
    curl_setopt($ch,CURLOPT_REFERER, $url);
    curl_setopt($ch,CURLOPT_TIMEOUT, 5);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox-Zalupa/3');
    if(
    $use_proxy = TRUE)
    {
        
    curl_setopt($ch, CURLOPT_PROXY, $proxylist[$proxy_number]);
        
    $proxy_number +=1;
        if(
    $proxy_number >= count($proxylist))
        {
        
    $proxy_number = 0;
        }
    }

    curl_exec($ch);
    curl_close($ch);

    }
    ?>
    proxy.txt
    Code:
    211.138.124.197:80
    221.130.13.208:80
    218.202.1.188:80
    
     
    _________________________
    1 person likes this.
  13. Deathdreams

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

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    b3
    Я же написал, Gifts просто прочитал мои мысли :)
    У него самый короткий и самый эффективный пример :)