Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   [Help] Работа с .txt файлов. (https://forum.antichat.xyz/showthread.php?t=154295)

Deathdreams 06.11.2009 13:57

[Help] Работа с .txt файлов.
 
Вообщем суть такова:

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

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

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

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

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

Помогите плиз :(

LStr1ke 06.11.2009 14:07

Покажи кусок такого файла с прокси.
функция $arr = file() не подходит?
там каждая строка файла будет значением массива $arr.
$arr[0] - первая строка =\

Deathdreams 06.11.2009 14:12

PHP код:


$proxys 
'proxy.txt';

$proxies file($proxys)

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

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

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

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

                                                         


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

Deathdreams 06.11.2009 14:14

1 раз - первая прокси

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

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

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

Gifts 06.11.2009 14:32

Deathdreams
PHP код:

$proxies file($proxy);
$c count($proxies);
$i 0;
while (
$i 100// на всякий случай, остановка после 100 итераций
{
list(
$addr,$port) = explode(":",trim($proxies[$i++ % $c]));
// делаем что хотим с проксей



LStr1ke 06.11.2009 14:32

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();
?>


Deathdreams 06.11.2009 14:45

LStr1ke
Не проверял, но всё равно не подходит немного

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

login999 06.11.2009 15:04

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

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

Deathdreams 06.11.2009 15:12

login999

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

login999 06.11.2009 15:16

Цитата:

Сообщение от Deathdreams
login999

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

Не, ну я заходил в тему "[Help] Работа с .txt файлов", и даже среди первого поста не было ни слова о том, что это пхп. :) Но это так, придирки.
Посмотри алгоритм, сможешь ли его на пхп реализовать. Удобно блин оно очень, я его в отдельный класс вынес да и все - никаких проблем, все красиво и функционально, и пох что это смесь бульдога с носорогом :)
Суть его в том, что обходишься вообще без цикла даже + проксики получаешь только валидные

krypt3r 06.11.2009 15:30

Что-нить типа
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++;
  }
?>


b3 06.11.2009 15:54

Помоему вы все делаете не ТО что просит Автор, как я понял ему нужно пройти цикл проксей и потом вернутся в начало, вот накатал по быстрому маленький пример:
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_RETURNTRANSFER0);
curl_setopt($ch,CURLOPT_REFERER$url);
curl_setopt($ch,CURLOPT_TIMEOUT5);
curl_setopt($chCURLOPT_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($chCURLOPT_PROXY$proxylist[$proxy_number]);
    
$proxy_number +=1;
    if(
$proxy_number >= count($proxylist))
    {
    
$proxy_number 0;
    }
}

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

}
?>

proxy.txt
Код:

211.138.124.197:80
221.130.13.208:80
218.202.1.188:80


Deathdreams 06.11.2009 20:19

b3
Я же написал, Gifts просто прочитал мои мысли :)
У него самый короткий и самый эффективный пример :)


Время: 18:31