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.

  1. /****************************************FUNCTION 1***********************************/
  2. function zwroc($plik) { //funkcja zwracajaca ilosc zapisanych ID
  3. global $ids;
  4.  
  5. $zmienna = file($plik);
  6.  
  7. intval($zmienna[0]);
  8.  
  9. for ($i=$zmienna[0]; $i<$zmienna[0]+1; $i++) {
  10. }
  11.  
  12.  
  13. $otworz = @fopen($plik, 'w+'); //wskaznik na poczatku pliku
  14. if ($otworz) {
  15. rewind ($otworz); //przesuwa wskaznik na poczatek pliku aby nadpisac poprzednia wartosc
  16. $zapisz = fwrite($otworz, $i);
  17. $zamknij = fclose ($otworz);
  18. return $i; //zwraca ilosc zapisanych ID
  19. }
  20. else {
  21. echo 'Nie mogę przeczytać pliku ' . $plik;
  22. }
  23. }
  24. /****************************************END OF FUNCTION 1*******************************/
  25.  
  26. function zapisuje($file, $wartosc) { //funkcja zapisuje ilosc obsluzonych proxy, zapisuje ta wartosc w pliku i zwraca ja
  27.  
  28. $gdzie = file($file);
  29. $b = intval($gdzie[0]) + $wartosc; //$wartość powinien być 1, gdy napotkamy znak separatora przeskakujemy do następnej linii
  30.  
  31. $otworz1 = @fopen($file, 'w+');
  32. if ($otworz1) {
  33. $zapisz1 = fwrite($otworz1, $b);
  34. $zamknij1 = fclose ($otworz1);
  35. return $b;
  36. }
  37. else {
  38. echo 'Nie mogę przeczytać pliku ' . $file;
  39. }
  40.  
  41. }
  42.  
  43.  
  44.  
  45.  
  46.  
  47. /****************************************FUNCTION 2***********************************/
  48. function skasuj($plik) {
  49. $open = fopen($plik, 'w');
  50.  
  51. if ($open) {
  52. $delete = fwrite($plik, '', filesize($plik)); //czysci zawarosc pliku
  53. fclose($open);
  54. echo 'Plik ' . $plik . ' zostal wyczyszczony wysylanie rozpoczyna sie ponownie';
  55. return 0; //zwracamy zero dlatego ze plik sie wyzerowal
  56. }
  57.  
  58. else {
  59. echo 'Nie mogę wyczyscic pliku ' . $plik;
  60. }
  61. }
  62. /****************************************END OF FUNCTION 2*******************************/
  63.  
  64.  
  65.  
  66.  
  67. /****************************************FUNCTION 3***********************************/
  68. function zwroc1($plik) { //funkcja oczytujaca ilosc obsluzonych katalogow
  69.  
  70. $zmienna = file($plik);
  71. if ($zmienna[0]=='') $zmienna[0]=0;
  72.  
  73. return intval($zmienna[0]); //zwraca ilosc obsluzonych katalogow
  74. }
  75. /****************************************END OF FUNCTION 3*******************************/



Zastosowanie funkcji:

  1.  
  2.  
  3. $ids = file("id.txt"); //wczytujemy listę id do tablicy
  4. $baseUrl = file("baseurl.txt"); // wczytujemy liste adresów url do tablicy
  5. $proxyList = file("proxy.txt"); //wczytujemy listę adresów proxy do tablicy
  6.  
  7. $ids1 = zwroc1('ile.txt'); //odczytujemy ilosc obsluzonych url
  8. $licznik1 = zwroc1('ile1.txt'); //odczytujemy ilosc obsluzonych id
  9.  
  10. if ($ids1 == 0) {$licznik1=0;} //WARUNEK0 wyjatek dla zera
  11.  
  12.  
  13.  
  14. $ile = zwroc1('file.txt'); //odczytujemy ilość obsłużonych adresów proxy
  15. if ($ile == '') $ile = 6; //jeśli nic to domyślnie ustawiamy "przesunięcie" na 6
  16.  
  17.  
  18. for($x=$ile-6; $x<=$ile; $x++)
  19.  
  20. {
  21. if (trim($proxyList[$x]) == '::') { //jesli spotakmy separator w adresach proxy to...
  22. $licznik2 = zapisuje('file.txt', $x+1); //zapisujemy w pliku wartosc zczytana z pliku powiekszona o 1
  23.  
  24.  
  25. $ids1 = zwroc('ile.txt'); //zapisujemy ilosc obsluzonych katalogow i zwiekaszamy o 1
  26.  
  27. if ($ids1 > count($ids)) { //WARUNEK1 jesli wszystkie rekordy zostaly obsluzone rozpoczynamy prace od nowa i zerujemy plik ile.txt licznik1=0 funkcja zwraca 0
  28. $licznik1 = skasuj('ile.txt');
  29. skasuj('ile1.txt');
  30. }
  31.  
  32. if (trim($ids[$ids1]) == '::') { //WARUNEK2 jesli napotkami znak '::' wywolujemy funkcje inkrementowania o 1 i zapisania wartosci w pliku zewnetrznym txt
  33. $licznik1 = zwroc('ile1.txt');
  34. $ids[$ids1] = trim($ids[$ids1+1]);
  35. }
  36. else {
  37. $licznik1 = zwroc1('ile1.txt'); //WARUNEK3
  38. }
  39.  
  40.  
  41.  
  42. echo 'Skonczylem obsluge 6 adresow proxy ostani obsluzony adres to ' . $licznik2;
  43. exit();
  44.  
  45. }