現在の位置: ホーム> 最新記事一覧> シミュレートされたユーザーの動作におけるTime_nanos Sleepテストアプリケーション

シミュレートされたユーザーの動作におけるTime_nanos Sleepテストアプリケーション

gitbox 2025-05-26

ウェブサイトのパフォーマンステストまたはユーザーの動作シミュレーションを実行する場合、リクエスト間の時間間隔を適切に制御することは、テストが実際のシナリオに近いことを確認するための重要なステップです。 Web開発で広く使用されている言語として、PHPは高精度のタイミング専用に設計されたツールではありませんが、組み込みのtime_nanos Sleep()関数を通じて、開発者はサブセコンド遅延制御を実装することができ、それによりユーザーの操作リズムをより現実的にシミュレートすることができます。この記事では、この機能を使用する方法を詳細に説明し、ユーザーの動作をシミュレートする際の実際のシナリオを示します。

1。TIME_NANOSLOIEK ()関数の紹介

Time_nanos Sleep()は、高精度の一時停止実行のためにPHPによって提供される関数です。これにより、開発者は、一般的な睡眠() (秒)またはusleep() (マイクロ秒)と比較して、「秒 +ナノ秒」で一時停止時間をより柔軟に設定できます。

関数プロトタイプは次のとおりです。

 bool time_nanosleep(int $seconds, int $nanoseconds)

パラメーター説明:

  • $秒:一時停止する秒数。

  • $ nanoseconds :一時停止するナノ秒数(0〜99,999,999)。

この関数は、正常な完了遅延を示すためにtrueを返します。中央の信号によって中断された場合、残りの時間を含む配列が返されます。

2。使用状況シナリオ:ユーザーアクセス動作をシミュレートします

Webページの閲覧、リンクのクリック、スクロールページなどのユーザーの動作をシミュレートする場合、各リクエストを遅らせるために睡眠(1)に依存するだけでは十分ではありません。ユーザーの操作は、数十ミリ秒離れている場合、または数ミリ秒離れている場合があります。 Time_nanos Sleep()を使用すると、これらの時間間隔はより慎重に制御できます。

例:ページごとにウェブサイトにアクセスするようにユーザーをシミュレートする

150ミリ秒ごとにWebサイトにアクセスするユーザーの別のページをシミュレートする必要があると仮定すると、次のコードを使用できます。

 $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 2番(今すぐ 150 毫2番)
    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 毫2番之间
    $milliseconds = rand(100, 500);
    time_nanosleep(0, $milliseconds * 1000000);
}

このようにして、シミュレーションプログラムは制御可能な間隔を提供するだけでなく、アクセスのランダム性を高め、実際のユーザーブラウジング動作に近づくこともできます。

4。注意すべきこと

  • 互換性Time_nanos Sleep()は、PHP 5以降導入されました。古いバージョンのPHPで使用されると、エラーが報告される場合があります。

  • パフォーマンスの影響:この機能はナノ秒制御を実現できますが、PHP自体はシステムクロックの精度によって制限され、ナノ秒の完全な精度を保証することはできません。

  • 信号割り込み処理time_nanosleep()が信号によって中断された場合、返される配列で再コールすることで完全な遅延を実現できます。

5。概要

パフォーマンスと自動化テストでは、実際のユーザーの動作をシミュレートするために、リクエスト間の時間遅延を正確に制御することが不可欠です。 PHPのTime_nanos Sleep()は、開発者がミリ秒レベルでさらに細かい時間制御を達成できるように、簡潔で効果的な方法を提供します。 Curlfile_get_contents() 、およびランダム間隔ロジックを組み合わせて、より現実的で効果的なユーザー行動シミュレーションシステムを構築して、ウェブサイトの安定性と応答パフォーマンスの強力な保証を提供できます。