현재 위치: > 최신 기사 목록> 시뮬레이션 된 사용자 동작에서 Time_NanoSleep 테스트 응용 프로그램

시뮬레이션 된 사용자 동작에서 Time_NanoSleep 테스트 응용 프로그램

gitbox 2025-05-26

웹 사이트 성능 테스트 또는 사용자 행동 시뮬레이션을 수행 할 때 요청 간의 시간 간격을 올바르게 제어하는 ​​것은 테스트가 실제 시나리오에 가까워 지도록하는 핵심 단계입니다. Web Development에서 널리 사용되는 언어로서 PHP는 고정밀 타이밍을 위해 특별히 설계된 도구가 아니지만 내장 Time_nanoSleep () 기능을 통해 개발자는 여전히 초 지연 제어를 구현할 수 있으므로 사용자의 운영 리듬을보다 현실적으로 시뮬레이션 할 수 있습니다. 이 기사는이 기능을 사용하는 방법을 심층적으로 탐색하고 사용자 동작을 시뮬레이션하는 데있어 실제 시나리오를 보여줍니다.

1. time_nanoSleep () 함수 소개

time_nanoSleep () 는 고정밀 일시 정지 실행을 위해 PHP가 제공하는 함수입니다. 이를 통해 개발자는 일반적인 수면 () (몇 초) 또는 usleep () (마이크로 초)에 비해 "초 + 나노초"에서 일시 중지 시간을 더 유연하게 설정할 수 있습니다.

기능 프로토 타입은 다음과 같습니다.

 bool time_nanosleep(int $seconds, int $nanoseconds)

매개 변수 설명 :

  • $ 초 : 일시 중지 할 초 수.

  • $ 나노 초 : 일시 중지 할 나노초 수 (0 ~ 999,999,999).

이 함수는 정상 완료 지연을 나타 내기 위해 true를 반환합니다. 중간에 신호에 의해 중단되면 나머지 시간을 포함하는 배열이 반환됩니다.

2. 사용 시나리오 : 사용자 액세스 동작 시뮬레이션

웹 페이지 탐색, 링크 클릭 또는 스크롤 페이지와 같은 사용자의 동작을 시뮬레이션 할 때는 단순히 수면 에 의존하기 만하면 각 요청을 지연시키기에 충분하지 않습니다. 사용자 운영은 수십 밀리 초 떨어져 있고 심지어 몇 밀리 초 간격으로 불과합니다. time_nanoSleep ()를 사용하면 이러한 시간 간격이보다 신중하게 제어 될 수 있습니다.

예 : 사용자를 시뮬레이션하여 웹 사이트 페이지를 방문하여 페이지를 방문하십시오.

150 밀리 초마다 웹 사이트를 방문하는 사용자의 다른 페이지를 시뮬레이션해야한다고 가정하면 다음 코드를 사용할 수 있습니다.

 $pages = [
    'https://gitbox.net/page1',
    'https://gitbox.net/page2',
    'https://gitbox.net/page3',
];

foreach ($pages as $page) {
    $ch = curl_init($page);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);

    echo "페이지를 방문하십시오: $page\n";

    // 정지시키다 0.15 두번째(지금 바로 150 毫두번째)
    time_nanosleep(0, 150 * 1000000);
}

여기서 CURL은 요청 페이지의 내용을 시뮬레이션하고 각 요청 후 150 밀리 초 정도 일시 정지하여 전체 프로세스가 인간의 자연 클릭 동작에 더 많이 만듭니다.

3. 불규칙한 액세스 리듬을 달성하십시오

실제 사용자의 액세스 빈도는 종종 불규칙합니다. rand () 함수를 결합하여 다른 간격을 생성 한 다음 Time_nanosleep ()를 사용하여보다 정통 시뮬레이션 스크립트를 구현할 수 있습니다.

 $urls = [
    'https://gitbox.net/article/101',
    'https://gitbox.net/article/102',
    'https://gitbox.net/article/103',
];

foreach ($urls as $url) {
    echo "시뮬레이션 된 액세스: $url\n";
    
    // 요청을 보내십시오
    file_get_contents($url);

    // 随机정지시키다 100 도착하다 500 毫두번째之间
    $milliseconds = rand(100, 500);
    time_nanosleep(0, $milliseconds * 1000000);
}

이러한 방식으로, 시뮬레이션 프로그램은 제어 가능한 간격을 제공 할뿐만 아니라 액세스 랜덤성을 증가시키고 실제 사용자 브라우징 동작에 더 가깝습니다.

4. 주목할만한 것들

  • 호환성 : PHP 5 이후 Time_nanoSleep ()가 도입되었습니다. 이전 버전의 PHP에서 사용하면 오류 가보고 될 수 있습니다.

  • 성능 영향 :이 기능은 나노초 제어를 달성 할 수 있지만 PHP 자체는 시스템 클록 정확도에 의해 제한되며 나노초의 완전한 정확도를 보장 할 수는 없습니다.

  • 신호 인터럽트 처리 : 신호에 의해 Time_NanoSleep () 가 중단되면 반환하는 배열에서 다시 부를 때 완전 지연을 달성 할 수 있습니다.

5. 요약

성능 및 자동화 테스트에서 실제 사용자 동작을 시뮬레이션하려면 요청 간의 시간 지연을 정확하게 제어하는 ​​것이 필수적입니다. PHP의 Time_NanoSleep () 는 개발자가 밀리 초 수준의 미세한 시간 제어를 달성 할 수 있도록 간결하고 효과적인 방법을 제공합니다. CURL , FILE_GET_CONTENTS () 와 임의의 간격 로직을 결합하여보다 현실적이고 효과적인 사용자 행동 시뮬레이션 시스템을 구축하여 웹 사이트 안정성 및 응답 성능에 대한 강력한 보증을 제공 할 수 있습니다.