Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
php_utils
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
bp
php_utils
Commits
c0219133
Commit
c0219133
authored
Jul 14, 2021
by
mengweifu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update: HttpUtil
parent
471681c7
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
56 additions
and
23 deletions
+56
-23
HttpUtil.php
src/Http/HttpUtil.php
+56
-23
No files found.
src/Http/HttpUtil.php
View file @
c0219133
...
...
@@ -57,14 +57,13 @@ class HttpUtil
$ch
=
self
::
CH
(
$url
,
$timeout
,
$headers
,
$post
,
$proxy
,
$method
,
$curl_opts
);
$result
=
false
;
//返回结果
$result_code
=
self
::
CODE_FAIL
;
//错误代码
$result_http_code
=
0
;
// http code
$error_msg
=
''
;
// ch error
$response
=
defaultResponse
();
if
(
is_resource
(
$ch
)
===
true
)
{
//返回结果
$result
=
false
;
while
((
$result
===
false
)
&&
(
$retries
--
>
0
))
{
$result
=
curl_exec
(
$ch
);
...
...
@@ -106,23 +105,13 @@ class HttpUtil
// 日志
self
::
addLog
(
$method
,
$url
,
$post
,
$result
);
if
(
curl_errno
(
$ch
)
!==
0
)
{
$error_msg
=
curl_error
(
$ch
);
}
$result_code
=
curl_errno
(
$ch
)
===
0
?
self
::
CODE_SUCCESS
:
self
::
CODE_FAIL
;
$result_http_code
=
curl_getinfo
(
$ch
,
CURLINFO_HTTP_CODE
);
// 返回结果
$response
=
self
::
createResponse
(
$result
,
$ch
);
curl_close
(
$ch
);
}
return
[
'code'
=>
$result_code
,
'response'
=>
empty
(
json_decode
(
$result
,
true
))
?
$result
:
json_decode
(
$result
,
true
),
'http_code'
=>
$result_http_code
,
'msg'
=>
$error_msg
,
];
return
$response
;
}
/**
...
...
@@ -197,16 +186,17 @@ class HttpUtil
{
$methods
=
[];
foreach
(
$urls
as
$k
=>
$url
)
{
$methods
[
$k
]
=
'
GE
T'
;
$methods
[
$k
]
=
'
POS
T'
;
}
return
self
::
MULTI_CURL
(
$urls
,
$methods
,
$posts
,
$timeouts
,
$headers
,
$proxies
,
$curl_opts
);
}
static
function
MULTI_GET
(
$urls
,
$timeouts
,
$headers
=
[],
$proxies
=
[],
$curl_opts
=
[])
static
function
MULTI_GET
(
$urls
=
[],
$params
=
[],
$timeouts
=
[]
,
$headers
=
[],
$proxies
=
[],
$curl_opts
=
[])
{
$methods
=
$posts
=
[];
foreach
(
$urls
as
$k
=>
$url
)
{
$methods
[
$k
]
=
'POST'
;
$urls
[
$k
]
=
$url
.
"?"
.
http_build_query
(
$params
[
$k
]);
$methods
[
$k
]
=
'GET'
;
$posts
[
$k
]
=
false
;
}
...
...
@@ -244,10 +234,23 @@ class HttpUtil
curl_multi_exec
(
$mh
,
$active
);
}
while
(
$active
);
$response
=
[];
//step four 获取结果,移除并close handle
foreach
(
$urls
as
$i
=>
$url
)
{
$res
[
$url
]
=
curl_multi_getcontent
(
$conn
[
$i
]);
$response_content
=
curl_multi_getcontent
(
$conn
[
$i
]);
$response
[
$i
]
=
self
::
createResponse
(
$response_content
,
$conn
[
$i
]);
// 监控
self
::
addMon
(
$url
,
curl_errno
(
$conn
[
$i
])
===
0
?
curl_getinfo
(
$conn
[
$i
],
CURLINFO_HTTP_CODE
)
:
-
999
,
round
(
curl_getinfo
(
$conn
[
$i
],
CURLINFO_TOTAL_TIME
),
4
)
*
1000
);
// 日志
self
::
addLog
(
$methods
[
$i
],
$url
,
$posts
[
$i
],
$response_content
);
curl_multi_remove_handle
(
$mh
,
$conn
[
$i
]);
curl_close
(
$conn
[
$i
]);
}
...
...
@@ -255,7 +258,7 @@ class HttpUtil
curl_multi_close
(
$mh
);
//step five 结果返回
return
$res
;
return
$res
ponse
;
}
/*
...
...
@@ -288,6 +291,7 @@ class HttpUtil
}
}
if
(
!
empty
(
$log
))
{
//
$params
=
self
::
change
(
$params
);
FileLog
::
info
(
$method
,
json_encode
([
'url'
=>
$urls
,
...
...
@@ -315,4 +319,33 @@ class HttpUtil
}
return
$arr
;
}
/**
* @param string $response_content 请求返回结果
* @param resource $ch_handle cURL resource
* @return array
*/
private
static
function
createResponse
(
string
$response_content
,
resource
$ch_handle
)
:
array
{
return
[
'code'
=>
curl_errno
(
$ch_handle
)
===
0
?
self
::
CODE_SUCCESS
:
self
::
CODE_FAIL
,
'response'
=>
empty
(
json_decode
(
$response_content
,
true
))
?
$response_content
:
json_decode
(
$response_content
,
true
),
'http_code'
=>
curl_getinfo
(
$ch_handle
,
CURLINFO_HTTP_CODE
),
'msg'
=>
curl_error
(
$ch_handle
),
];
}
/**
* 默认返回
* @return array
*/
private
static
function
defaultResponse
()
:
array
{
return
[
'code'
=>
self
::
CODE_FAIL
,
'response'
=>
''
,
'http_code'
=>
0
,
'msg'
=>
''
,
];
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment