Просмотр полной версии : [Help] Работа с .txt файлов.
Deathdreams
06.11.2009, 13:57
Вообщем суть такова:
нужен скрипт, который будет вытягивать из файла проксей прокси по порядку.
Пытался и array_ search тут использовать и через current, next,end - не получилось.Нужно чтобы было так:
первый вызов: [0] прокси в массиве
Последующий вызов : текщий + 1
И самый важный момент: Если прокси последняя в массиве, то начать с самого начала. (с [0] значения в массиве).
Помогите плиз :(
Покажи кусок такого файла с прокси.
функция $arr = file() не подходит?
там каждая строка файла будет значением массива $arr.
$arr[0] - первая строка =\
Deathdreams
06.11.2009, 14:12
$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 раз - третья прокси
А потом проверка, если прокси последняя , то после её использования взять опять первую прокси
Deathdreams $proxies = file($proxy);
$c = count($proxies);
$i = 0;
while ($i < 100) // на всякий случай, остановка после 100 итераций
{
list($addr,$port) = explode(":",trim($proxies[$i++ % $c]));
// делаем что хотим с проксей
}
<?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
login999
По посту #3 (моему) не видно, что это PHP? :)
Не, ну я заходил в тему "[Help] Работа с .txt файлов", и даже среди первого поста не было ни слова о том, что это пхп. :) Но это так, придирки.
Посмотри алгоритм, сможешь ли его на пхп реализовать. Удобно блин оно очень, я его в отдельный класс вынес да и все - никаких проблем, все красиво и функционально, и пох что это смесь бульдога с носорогом :)
Суть его в том, что обходишься вообще без цикла даже + проксики получаешь только валидные
Что-нить типа
<?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++;
}
?>
Помоему вы все делаете не ТО что просит Автор, как я понял ему нужно пройти цикл проксей и потом вернутся в начало, вот накатал по быстрому маленький пример:
<?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
211.138.124.197:80
221.130.13.208:80
218.202.1.188:80
Deathdreams
06.11.2009, 20:19
b3
Я же написал, Gifts просто прочитал мои мысли :)
У него самый короткий и самый эффективный пример :)
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot