Относно употребата на sleep() и поведението на ботовете

anonimen

Super Moderator
Беше ми странно за какво я има тази функция, прочетох някои мнения и разбрах, че се използва за задържане на заявки към mysql/други сървъри с цел по-малко трафик. Но какво се случва при следната ситуация:

Код:
ботът отваря login.php (с примерно съдържание: sleep(2); login_check(); )
изпълнява се sleep(2);
ботът:
 а) изчаква зареждането -> по-малко трафик
 б) затваря връзката -> скриптът продължава или не? изпълнява ли се login_check()?
 в) ботът отваря нова връзка и запазва старата, изчаквайки резултат и от нея, и от новата -> няма ефект от sleep(); и се извършва проверка login_check()
Какво е най-ефективното решение?
 
Представи си, че имаш страница login.php! Така имаш някакъв код и посредата имаш sleep(5);.
Код:
//някакъв код премирно от 10 реда ... (1)

sleep(5);

//друга част от кода примерно 7 реда. (2)
Когато страницата бъде отворена ще се изпълнят командиде от код (1) докато стигне до sleep(5); Тогава ще се активира изчакване от 5 секунди и ще се зареди останалата част от кода (2). По въпроса ти ще изчака 2 секунди и ще извика функцията ако sleep(2); e преди функцията. Ако е след извикването на функцията тя ще се изпълни и ще изчака 2 секунди след нейното изпълнение.
 
Да, това ми е ясно. Затова ги казах в този ред:
1. sleep(2);
2. login_check();
Но се чудя дали има положителен ефект, тоест ако затворя браузъра по време на изчакването дали на сървъра скриптът ще продължи да се изпълнява или не? И затова питах и как точно постъпват хакерите/ботовете.

Защото си мисля нещо такова - хакерът прави програма,която пробва пароли. И тя какво прави - изчаква резултат (по-малко пробвани пароли за единица време), пуска нова заявка към сървъра (изчаквайки и старата, тоест sleep() не забавя нищо) или какво?
 
Ако затвориш по време на sleep() останалата част няма да се изпълни, дефакто sleep() е към самия скрипт и ти спираш цялото изпълнение.

Под изчаква резултат не мисля, че трябва да разбираш, че правят изчакване със sleep(). Просто, когато чакат данни, те си чакат да получат някакви определени данни, когато се получат се изпълнява друг код и т.н.
Правил съм ботове и само в един случай ми се е налагало да ползвам sleep() и то, ако самия сайт има някакъв таймер, който трябва да се изчака да премине.
 
Revelation каза:
Ако затвориш по време на sleep() останалата част няма да се изпълни, дефакто sleep() е към самия скрипт и ти спираш цялото изпълнение.

Под изчаква резултат не мисля, че трябва да разбираш, че правят изчакване със sleep(). Просто, когато чакат данни, те си чакат да получат някакви определени данни, когато се получат се изпълнява друг код и т.н.
Правил съм ботове и само в един случай ми се е налагало да ползвам sleep() и то, ако самия сайт има някакъв таймер, който трябва да се изчака да премине.
Да! Напълно правилно е това което каза.
 

Back
Горе