Итак, у вас есть простой скрипт, который вы хотели бы запускать в цикле.
Первый способ зациклить ваш XHE скрипт это воспользоваться расписанием скриптов.
В программе есть настройки, которые позволяют запускать скрипт раз в минуту, раз в 5 минут и т.д. Это пожалуй самый простой способ, но у этого способа
есть существенные минусы — например если нужно читать из файла какие-либо данные, то придётся хранить индекс прочитанной строки, где то в отдельном файле
и потом подставлять его в скрипт. Согласитесь это не очень удобно.
Вместо этого можно организовать цикл основанный на чтении данных из файла. Предположим у нас есть некий файл с проксями «proxy.txt», из которого нам
нужно взять прокси подставить его в скрипт и перейти на какой то сайт. При этом, как только мы подставим все прокси из файла скрипт должен остановиться.
Для этого первым делом мы получим прокси из файла в массив следующим кодом . Теперь когда у нас все прокси получены в массив
делаем цикл for на основе этого массива следующим кодом — где
— это количество элементов в массиве. В результате у нас получается следующий код скрипте:
1 2 3 4 5 6 7 8 9 10 |
// получить прокси из файла в массив $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, то тогда код в скрипте будет выглядеть следующим образом:
1 2 3 4 5 6 |
// выполнить цикл 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. В итоге имеем следующий код в скрипте:
1 2 3 4 5 6 7 8 9 10 11 12 |
// перед этим переходим на страницу регистрации и заполняем поле login // проверим не появился ли текст сигнализирующий о том что логин уже занят $ind = strpos($webpage->get_body(),"is already taken"); // делаем цикл - если не нашли нужный текст повторяем операцию заново while($ind!==false) { // тут задаём новое значение в поле логина // проверяем опять не появился ли текст после ввода нового логина в поле $ind = strpos($webpage->get_body(),"is already taken"); } |
С помощью for и while можно создавать бесконечные циклы — . В скрипте это будет выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// делаем бесконечный цикл while while(true) { // что то делаем... // условие для выхода из бесконечного цикла if(какое то условие) break; } // бесконечный цикл for for ($i = 1;;$i++) { // что то делаем.... // условие для выхода из бесконечного цикла if(какое то условие) break; } |
Оператор break служит для выхода из цикла.
Более подробно про циклы в php можно найти тут www.phpfaq.ru/php5.ru/study/chapter3.html#loop