file_get_contents Version:
04 | * @param string $url 请求地址 |
05 | * @param array $post_data post键值对数据 |
08 | function send_post( $url ,
$post_data ) { |
10 | $postdata = http_build_query( $post_data ); |
14 |
'header' => 'Content-type:application/x-www-form-urlencoded' ,
|
15 |
'content' => $postdata ,
|
16 |
'timeout' => 15 * 60 // 超时时间(单位:s)
|
19 |
$context = stream_context_create( $options );
|
20 |
$result = file_get_contents ( $url , false,
$context );
|
Wie folgt verwenden:
2 |
'username' => 'stclair2201' ,
|
5 |
send_post( 'http://blog.snsgou.com' ,
$post_data );
|
Praktische Erfahrung:
Als ich den obigen Code verwendet habe, um eine http-Anfrage an einen anderen Server zu senden, stellte ich fest, dass, wenn der Server zu lange braucht, um die Anfrage zu verarbeiten, Das lokale PHP wird Anfragen unterbrechen, die sogenannten Timeout-Interrupts. Der erste Verdacht besteht darin, dass die Ausführungszeit von PHP selbst das Limit überschreitet. Denken Sie jedoch darüber nach, und dies sollte nicht der Fall sein, da das „PHP-Ausführungszeitlimit“ festgelegt wurde Laut diesem Artikel vor langer Zeit ([Empfohlen] Größenbeschränkung für PHP-Upload-Dateien) habe ich sorgfältig darüber nachgedacht, und nachdem ich darüber nachgedacht hatte, sollte es ein Zeitlimit für die http-Anfrage selbst sein, also habe ich darüber nachgedacht, wie ich es erhöhen kann das Zeitlimit der http-Anfrage. . . . . . Schauen Sie im PHP-Handbuch nach, dort gibt es tatsächlich einen Parameter
„Timeout“, ich weiß nicht, wie groß es standardmäßig ist. Wenn Sie den Wert auf einen größeren Wert einstellen, wird das Problem gelöst~~~
Socket Version:
04 |
* $post_string = "app=socket&version=beta";
|
05 |
* request_by_socket('blog.snsgou.com', '/restServer.php', $post_string);
|
07 |
function request_by_socket( $remote_server , $remote_path , $post_string , $port = 80, $timeout = 30) {
|
08 |
$socket = fsockopen ( $remote_server ,
$port , $errno ,
$errstr , $timeout );
|
09 |
if (! $socket )
die ( "$errstr($errno)" );
|
10 |
fwrite( $socket ,
"POST $remote_path HTTP/1.0" );
|
11 |
fwrite( $socket ,
"User-Agent: Socket Example" );
|
12 |
fwrite( $socket ,
"HOST: $remote_server" );
|
13 |
fwrite( $socket ,
"Content-type: application/x-www-form-urlencoded" );
|
14 |
fwrite( $socket ,
"Content-length: " . ( strlen ( $post_string ) + 8) .
"" );
|
15 |
fwrite( $socket ,
"Accept:*/*" );
|
17 |
fwrite( $socket ,
"mypost=$post_string" );
|
20 |
while ( $str = trim( fgets ( $socket , 4096))) {
|
25 |
while (! feof ( $socket )) {
|
26 |
$data .= fgets ( $socket , 4096);
|
Curl-Version:
04 |
* $post_string = "app=request&version=beta";
|
05 |
* request_by_curl('http://blog.snsgou.com/restServer.php', $post_string);
|
07 |
function request_by_curl( $remote_server ,
$post_string ) {
|
09 |
curl_setopt( $ch , CURLOPT_URL,
$remote_server );
|
10 |
curl_setopt( $ch , CURLOPT_POSTFIELDS,
'mypost=' . $post_string );
|
11 |
curl_setopt( $ch , CURLOPT_RETURNTRANSFER, true);
|
12 |
curl_setopt( $ch , CURLOPT_USERAGENT,
"snsgou.com's CURL Example beta" );
|
13 |
$data = curl_exec( $ch );
|
Curl-Version (2)
04 |
* @param string $url 请求地址
|
05 |
* @param string $method 请求方式 GET/POST
|
06 |
* @param string $refererUrl 请求来源地址
|
07 |
* @param array $data 发送数据
|
08 |
* @param string $contentType
|
09 |
* @param string $timeout
|
10 |
* @param string $proxy
|
13 |
function send_request( $url ,
$data , $refererUrl = '' , $method = 'GET' ,
$contentType = 'application/json' ,
$timeout = 30, $proxy = false) {
|
15 |
if ( 'POST' === strtoupper ( $method )) {
|
17 |
curl_setopt( $ch , CURLOPT_POST, 1);
|
18 |
curl_setopt( $ch , CURLOPT_HEADER,0 );
|
19 |
curl_setopt( $ch , CURLOPT_FRESH_CONNECT, 1);
|
20 |
curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1);
|
21 |
curl_setopt( $ch , CURLOPT_FORBID_REUSE, 1);
|
22 |
curl_setopt( $ch , CURLOPT_TIMEOUT,
$timeout );
|
24 |
curl_setopt( $ch , CURLOPT_REFERER,
$refererUrl );
|
27 |
curl_setopt( $ch , CURLOPT_HTTPHEADER,
array ( 'Content-Type:' . $contentType ));
|
30 |
curl_setopt( $ch , CURLOPT_POSTFIELDS,
$data );
|
32 |
curl_setopt( $ch , CURLOPT_POSTFIELDS, http_build_query( $data ));
|
34 |
} else if ( 'GET' === strtoupper ( $method )) {
|
35 |
if ( is_string ( $data )) {
|
36 |
$real_url = $url . ( strpos ( $url ,
'?' ) === false ? '?' : '' ).
$data ;
|
38 |
$real_url = $url . ( strpos ( $url ,
'?' ) === false ? '?' : '' ). http_build_query( $data );
|
41 |
$ch = curl_init( $real_url );
|
42 |
curl_setopt( $ch , CURLOPT_HEADER, 0);
|
43 |
curl_setopt( $ch , CURLOPT_HTTPHEADER,
array ( 'Content-Type:' . $contentType ));
|
44 |
curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1);
|
45 |
curl_setopt( $ch , CURLOPT_TIMEOUT,
$timeout );
|
47 |
curl_setopt( $ch , CURLOPT_REFERER,
$refererUrl );
|
50 |
$args = func_get_args();
|
55 |
curl_setopt( $ch , CURLOPT_PROXY,
$proxy );
|
58 |
$info = curl_getinfo( $ch );
|
Ein Beispiel für den Aufruf der WCF-Schnittstelle: $json = restRequest($r_url,'POST', json_encode( $ data));
Das Obige stellt die Implementierung von Post und Get in PHP vor, einschließlich Aspekten des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn