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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перебрать уникальный прокси 
V
    Опции темы
neoks
Дата 4.1.2012, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В чем суть, есть список прокси и есть список прокси которые уже заняты и их нельзя использовать.
Я уже 3й день мучаюсь, постоянно лажа с ним, это все равно что играть в рулетку )
Вроде настроил и протестировал, работает, но на деле все плохо уже не знаю что делать, нужна ваша помошь.

Вот сама функция для подбора прокси.

Код

function bproxy($proxylist,$proxyex = array()){    
    $parr = explode("\n",trim($proxylist));
    
    foreach($parr as $name){
        if(trim($name) !== '') $d1[] = trim($name);
    }
    foreach($proxyex as $name){
        if(trim($name) !== '') $d2[] = trim($name);
    }
    
    if(count($d2) > 0 && count($d1) > 0){
        foreach($d1 as $name){
            if(!in_array($name,$d2)){
                return $name;
                break;
            }
        }
    }
    elseif(count($d1) > 0){
        return $d1[rand(0,count($d1)-1)];
    }
    
    return false;
}


В $proxylist у меня простой список типа

Код

188.120.229.105:8080
92.63.99.62:8080
92.63.107.192:8080


Функция возвращает уникальный прокси, пробовал функцией array_diff() но она возвращает уникальный учитывая с двух массивов, мне нужен тока с первого списка а именно с $proxylist

На данный момент я уже пробовал массу вариантов, пока добился 50-70% работы, остальные 30% полный облом (:
Хелп плиз )
PM MAIL   Вверх
mexanika
Дата 4.1.2012, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вы уверены, что array_diff() не подходит?

из мануала:
Функция array_diff() возвращает массив, состоящий из значений массива array1 , которые отсутствуют в любом другом массиве, перечисленном в последующих аргументах.
т.е. в вашем случае первым массивом должен идти $proxylist

PM MAIL   Вверх
neoks
Дата 4.1.2012, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Да, пробовал, ведет себя странно и не корректно, вероятность что вернет со списка $proxylist составляет 50%, остальные 50% вернет с другого списка, я пробовал и пробовал, результат удручает (
PM MAIL   Вверх
actuator
Дата 5.1.2012, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

<?
$pl = <<<PL
    188.120.229.105    :    65535
    92.63.99.62    :    8080
    92.63.107.192    :    8080
PL;

function pick_proxy($proxy_list, $used_list = array())
{
    function parse_list($proxy_list) {
        $parsed_list = array();

        foreach (explode("\n", $proxy_list) as $proxy_line) {
            list($addr, $port) = explode(":", $proxy_line);
            $addr = trim($addr); $port = trim($port);
            if (ip2long($addr) && intval($port) && $port < 0x10000) $parsed_list[] = "$addr:$port";
        }

        return $parsed_list;
    }

    $available_list = array_diff(parse_list($proxy_list), parse_list(implode("\n", $used_list)));

    return $available_list[array_rand($available_list)];
}

var_dump(pick_proxy($pl, array('188.120.229.105:65535')));
?>


Глобально и надежно smile

Это сообщение отредактировал(а) actuator - 5.1.2012, 09:42
PM MAIL   Вверх
neoks
Дата 5.1.2012, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ура, вроде работает, Спасибо actuator, чтоб я без тебя делал  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0418 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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