Otóż chcę zrobić coś takiego. Mam listę adresów proxy zapisaną w pliku txt w postaci:
217.13.212.228:3128
110.149.151.49:3128
::
167.145.34.23:3128
162.146.34.23:3128
itd.
Następnie mam listę adresów url i numerów id wygląda to tak:
adresy url:
www.strona1.pl
www.strona2.pl
adresy id
123
234
:: //separator
768
790
itd.
Do każdej ze stron jest przyporządkowana grupa id oddzielona separatorem i to jest OK.
Chce jednak zrobić coś takiego aby dla przykładowo 6 adresów proxy odczytanych z pliku funkcja zwracała odpowiednie pary adres url -> adres id i tak za każdym uruchomieniem. Oczywiście funkcja musi zapamiętywać w pliku txt tzw. "przedział skanowania dla proxy".
Sam wykombinowałem coś takiego ale już się zaczynam w tym gubić i liczę na pomoc kogoś bardziej zdolnego.
/****************************************FUNCTION 1***********************************/
function zwroc($plik) { //funkcja zwracajaca ilosc zapisanych ID
for ($i=$zmienna[0]; $i<$zmienna[0]+1; $i++) {
}
$otworz = @fopen($plik, 'w+'); //wskaznik na poczatku pliku if ($otworz) {
rewind ($otworz); //przesuwa wskaznik na poczatek pliku aby nadpisac poprzednia wartosc $zapisz = fwrite($otworz, $i); return $i; //zwraca ilosc zapisanych ID
}
else {
echo 'Nie mogę przeczytać pliku ' . $plik; }
}
/****************************************END OF FUNCTION 1*******************************/
function zapisuje($file, $wartosc) { //funkcja zapisuje ilosc obsluzonych proxy, zapisuje ta wartosc w pliku i zwraca ja
$b = intval($gdzie[0
]) + $wartosc; //$wartość powinien być 1, gdy napotkamy znak separatora przeskakujemy do następnej linii
$otworz1 = @fopen($file, 'w+'); if ($otworz1) {
$zapisz1 = fwrite($otworz1, $b); $zamknij1 = fclose ($otworz1); return $b;
}
else {
echo 'Nie mogę przeczytać pliku ' . $file; }
}
/****************************************FUNCTION 2***********************************/
function skasuj($plik) {
$open = fopen($plik, 'w');
if ($open) {
echo 'Plik ' . $plik . ' zostal wyczyszczony wysylanie rozpoczyna sie ponownie'; return 0; //zwracamy zero dlatego ze plik sie wyzerowal
}
else {
echo 'Nie mogę wyczyscic pliku ' . $plik; }
}
/****************************************END OF FUNCTION 2*******************************/
/****************************************FUNCTION 3***********************************/
function zwroc1($plik) { //funkcja oczytujaca ilosc obsluzonych katalogow
if ($zmienna[0]=='') $zmienna[0]=0;
return intval($zmienna[0
]); //zwraca ilosc obsluzonych katalogow }
/****************************************END OF FUNCTION 3*******************************/
Zastosowanie funkcji:
$ids = file("id.txt"); //wczytujemy listę id do tablicy $baseUrl = file("baseurl.txt"); // wczytujemy liste adresów url do tablicy $proxyList = file("proxy.txt"); //wczytujemy listę adresów proxy do tablicy
$ids1 = zwroc1('ile.txt'); //odczytujemy ilosc obsluzonych url
$licznik1 = zwroc1('ile1.txt'); //odczytujemy ilosc obsluzonych id
if ($ids1 == 0) {$licznik1=0;} //WARUNEK0 wyjatek dla zera
$ile = zwroc1('file.txt'); //odczytujemy ilość obsłużonych adresów proxy
if ($ile == '') $ile = 6; //jeśli nic to domyślnie ustawiamy "przesunięcie" na 6
for($x=$ile-6; $x<=$ile; $x++)
{
if (trim($proxyList[$x]) == '::') { //jesli spotakmy separator w adresach proxy to... $licznik2 = zapisuje('file.txt', $x+1); //zapisujemy w pliku wartosc zczytana z pliku powiekszona o 1
$ids1 = zwroc('ile.txt'); //zapisujemy ilosc obsluzonych katalogow i zwiekaszamy o 1
if ($ids1 > count($ids)) { //WARUNEK1 jesli wszystkie rekordy zostaly obsluzone rozpoczynamy prace od nowa i zerujemy plik ile.txt licznik1=0 funkcja zwraca 0 $licznik1 = skasuj('ile.txt');
skasuj('ile1.txt');
}
if (trim($ids[$ids1]) == '::') { //WARUNEK2 jesli napotkami znak '::' wywolujemy funkcje inkrementowania o 1 i zapisania wartosci w pliku zewnetrznym txt $licznik1 = zwroc('ile1.txt');
$ids[$ids1] = trim($ids[$ids1+1
]); }
else {
$licznik1 = zwroc1('ile1.txt'); //WARUNEK3
}
echo 'Skonczylem obsluge 6 adresow proxy ostani obsluzony adres to ' . $licznik2;
}