php Как продолжать открывать новые подключения и не ждать закрытия открытых подключений с помощью curl multi?

Я пытаюсь бомбардировать свой сайт, используя одновременно 50-100 + curl connections,

Я сделал список URL-адресов в массиве [идентификаторы постов являются инкрементными], поэтому один и тот же URL-адрес не будет доступен дважды, поскольку на сервере включено кэширование.

Я хочу сделать это чисто в php-curl как я знаком с php.

я посмотрел на stackoverflow и нашел это PHP: одновременно открывать URL для имитации атаки DOS?

но нет никакого решения для того, чтобы делать то, что я пытаюсь сделать. я не хочу использовать сторонние инструменты. так как некоторые для Windows, некоторые для Linux, некоторые устарели, в то время как я более знаком с php.

Прямо сейчас мой код ожидает закрытия текущих соединений, а затем запускает новые. пока я не хочу ждать закрытия открытых соединений и просто продолжать новые подключения.

вот мой код до сих пор.

<?php

$my_site_url = 'https://example.com/item/post_id';

$threads = 80;

$all_post_ids = array();

//get all ids in the array
for($int = 50; $int <= 200000 ; $int++){
$all_post_ids[] = $int;
}
//printr($all_post_ids);


//make chunks from the big array
foreach(array_chunk($all_post_ids, $threads) as $post_ids_chunk) {

$ch = curl_multi_init();

foreach ($post_ids_chunk as $i => $each_id) {

$url = str_replace("post_id" , $each_id , $my_site_url) ;

echo $url."\n" ;

$conn[$i] = curl_init($url);
curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1);
curl_setopt($conn[$i], CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($conn[$i], CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($conn[$i], CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36');
curl_setopt($conn[$i], CURLOPT_HEADER, 0);
curl_multi_add_handle($ch, $conn[$i]);
}

do {
$status = curl_multi_exec($ch, $active);
} while ($status === CURLM_CALL_MULTI_PERFORM || $active);

foreach ($post_ids_chunk as $i => $each_id){
//$header[$i] = curl_getinfo($conn[$i]);
//var_dump( $header[$i]);
//echo $header[$i]['http_code'];
//$received_data[$i] = curl_multi_getcontent($conn[$i]);
curl_multi_remove_handle($ch, $conn[$i]);
}

curl_multi_close($ch);

}

Так, как я могу не ждать, когда открытые соединения закрываются и запускаются новые, скажем, в секунду или как можно скорее.

Что мне здесь не хватает?

Спасибо за ваше время.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector