PHP多线程使用线程池
super
2023-11-10 16:38
1184
如果没有安装多线程拓展,请看
https://rongsp.com/article/371.html
<?php
function curl_post($url, $post_data)
{
$header = [
'Accept: application/json',
];
// 初始化
$curl = curl_init();
// 设置抓取的url
curl_setopt($curl, CURLOPT_URL, $url);
// 设置头文件的信息作为数据流输出
curl_setopt($curl, CURLOPT_HEADER, false);
// 设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 超时设置
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
// 超时设置,以毫秒为单位
// curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500);
// 设置请求头
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE );
// 设置post方式提交
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
// 执行命令
$data = curl_exec($curl);
$error = curl_error($curl);
curl_close($curl);
// 显示错误信息
if ($error) {
// print "Error: " . $error;
return ['code' => 500, 'msg' => $error];
} else {
// 打印返回的内容
// var_dump($data);
// print_r(json_decode($data, true));
return ['code' => 200, 'msg' => '', 'data' => $data];
}
}
class Login extends Thread
{
private $account;
private $password;
public $res;
public function __construct($account, $password) {
$this->account = $account;
$this->password = $password;
}
public function run() {
$res = curl_post('http://xxxx.net/login.php', ['account' => $this->account, 'password' => $this->password]);
print_r($res);
}
}
$pool = new Pool(100);
for($i = 1; $i <= 100; $i++) {
$pool->submit(new Login($i, $i));
}
$pool->shutdown();
0 条讨论