Циклы в скриптах php и Human Emulator

Итак, у вас есть простой скрипт, который вы хотели бы запускать в цикле.

Первый способ зациклить ваш XHE скрипт это воспользоваться расписанием скриптов.
В программе есть настройки, которые позволяют запускать скрипт раз в минуту, раз в 5 минут и т.д. Это пожалуй самый простой способ, но у этого способа
есть существенные минусы — например если нужно читать из файла какие-либо данные, то придётся хранить индекс прочитанной строки, где то в отдельном файле
и потом подставлять его в скрипт. Согласитесь это не очень удобно.

Вместо этого можно организовать цикл основанный на чтении данных из файла. Предположим у нас есть некий файл с проксями «proxy.txt», из которого нам
нужно взять прокси подставить его в скрипт и перейти на какой то сайт. При этом, как только мы подставим все прокси из файла скрипт должен остановиться.
Для этого первым делом мы получим прокси из файла в массив следующим кодом . Теперь когда у нас все прокси получены в массив
делаем цикл for на основе этого массива следующим кодом — где
— это количество элементов в массиве. В результате у нас получается следующий код скрипте:

// получить прокси из файла в массив
$proxies= file("proxy.txt");
// цикл пройтись по всем прокси в массиве
for($i=0;$i<count($proxies);$i++) { // получить прокси из массива $proxy = $proxies[$i]; // задать прокси браузеру $browser->enable_proxy("all connections",$proxy); 
   // перейти на сайт проверки ip
   $browser->navigate('2ip.ru');
   $browser->wait_for(60,0);

   // идём куда то дальше и что то делаем ещё ... 
}

Если нужно что бы цикл выполнил действия заданное количество раз, например 10, то тогда код в скрипте будет выглядеть следующим образом:

// выполнить цикл 10 раз
for($i=0;$i<10;$i++) { // перейти на сайт google.com $browser->navigate('google.com');
   $browser->wait_for(60,0);

   // идём куда то дальше и что то делаем ещё ... 
}

Ещё один способ организовать цикл в скрипте это использовать while. Например нам нужно подобрать логин на сайт,
который ещё не занят. При этом когда в поле логина вводим значение на странице регистрации появляется текст «is already taken».
Для начала после заполнения поля логина сделаем проверку есть ли этот текст на странице следующим кодом
— где strpos это функция получения индекса заданного текста в строке, если строки нет то возвращает false; $webpage->get_body() — функция получения body текущей страницы в браузере;.
Теперь мы организовываем цикл на основе этого индекса следующим кодом — то есть
выполнять действие до тех пор пока индекс равен false. В итоге имеем следующий код в скрипте:

 
// перед этим переходим на страницу регистрации и заполняем поле login
 
// проверим не появился ли текст сигнализирующий о том что логин уже занят
$ind = strpos($webpage->get_body(),"is already taken");
// делаем цикл - если не нашли нужный текст повторяем операцию заново
while($ind!==false)
{
  // тут задаём новое значение в поле логина
 
  // проверяем опять не появился ли текст после ввода нового логина в поле
  $ind = strpos($webpage->get_body(),"is already taken");
}

С помощью for и while можно создавать бесконечные циклы — . В скрипте это будет выглядеть так:

 
// делаем бесконечный цикл while 
while(true)
{
  // что то делаем...
  
  // условие для выхода из бесконечного цикла
  if(какое то условие)
     break;
}
// бесконечный цикл for
for ($i = 1;;$i++) 
{
  // что то делаем.... 
  
  // условие для выхода из бесконечного цикла
  if(какое то условие)
     break;
}

Оператор break служит для выхода из цикла.

Более подробно про циклы в php можно найти тут www.phpfaq.ru/php5.ru/study/chapter3.html#loop