index.php
<?phpini_set ( "max_execution_time", "0");
//要傳遞的資料
$form_data = array
( 'name' => 'testname',
'gender' => 'man');
//提交的檔案資訊
請求位址埠資訊
// 請求的網域名稱例:baidu.com,這裡是 localhost
$host = 'localhost';
$port = 80;
$errno = '';
$errstr = '';
//設定連線超時時間
$timeout = 60;
//請求網域名稱後詳細位址
$url = '/test/index2.php?testget=testval';
//如果是get 請求,可直接將編譯後的引數放到url上
//請求方式
$method = "post";
//建立連線控制代碼
$fp = fsockopen ( $host, $port, $errno, $errstr, $timeout
);if (! $fp
) //
0,資源流將會被轉換為非阻塞模式;如果是1,資源流將會被轉換為阻塞模式
// 將此鏈結控制代碼變為非阻塞模式,如果傳值中有檔案,則非同步無效,並且傳值陣列中檔案以後的傳值內容也無法正常傳值
stream_set_blocking ( $fp, 0);
//post傳值有兩種方式
//********************= 第一種,無需傳遞檔案 ********************=
//格式化一下
也可以傳遞json資料,直接json編譯下陣列即可
// $data = json_encode ( $form_data ) ;
//********************= 第一種,無需傳遞檔案結束 ********************=
//********************= 第二種,可以傳遞檔案,但不能設定 stream_set_blocking 等於 0 ********************=
/*srand((double)microtime()*1000000);
$boundary = "---------------------------".substr(md5(rand(0,32000)),0,10);
$data = "--$boundary\r\n";
foreach($form_data as $key=>$val)
// file data
foreach($file_data as $file)
$data .="--\r\n\r\n";
*///
********************= 第二種,可以傳遞檔案結束 ********************=
// 連線控制代碼不報錯就拼接請求內容
//**********====不同傳值方式 content-type 值*************************===
//get及post第一種,無需傳遞檔案
//post第二種,可以傳遞檔案
//$out .= "content-type:multipart/form-data; boundary=$boundary\r\n";
//**********====不同傳值方式 content-type 值結束*************************===
$out .= "content-length:" . strlen ( $data ) . "\r\n";
$out .= "connection:close\r\n\r\n";
$out .= "$";
//傳送請求
fputs ( $fp, $out
);//
非阻塞模式需要設定系統延時,否則程式會不等待收到結果就往下執行**,這時會有獲取不到結果的情況
// 具體設定延時多長時間,具體還要看介面的響應時間多久
usleep ( 5000);
//獲取返回內容(包含響應頭資訊)
$response = '';
while ( $row = fread ( $fp, 4096) )
//關閉鏈結
fclose ( $fp
);//
過濾返回的響應頭資訊
// strpos() 函式查詢字串在另一字串中第一次出現的位置。
$pos = strpos ( $response, "\r\n\r\n");
$header = substr ( $response, 0, $pos
);$result = substr ( $response, $pos + 4);
echo
$header,"
";//
輸出返回結果
//post json方式傳值
$data = file_get_contents('php://input');
$data = json_decode($data,true);
echo $data['name'],"
";echo $data['gender'],"";
*/exit ();
非同步非阻塞
sk.setblocking false 不會阻塞但是會報錯 setattr sk,callback func url func 1 try 阻塞,非阻塞報錯,捕捉錯誤 sk.connect url func 0 80 except blockingioerror as e pass while t...
非同步非阻塞
首先討論下使用事件驅動,非同步程式設計的優點 充分利用了系統資源,執行 無須阻塞等待某種操作完成,有限的資源可以用於其他的任務。其非常適合於後端的網路服務程式設計。在伺服器開發中,併發的請求處理是個大問題,阻塞式的函式會導致資源浪費和時間延遲。通過事件註冊 非同步函式,開發人員可以提高資源的利用率,...
阻塞,非阻塞,非同步,同步
之前一直對這個概念理不太清楚,今天看到一篇文章感覺不錯 本文 老張愛喝茶,廢話不說,煮開水。出場人物 老張,水壺兩把 普通 水壺,簡稱水壺 會響的水壺,簡稱響水壺 1 老張把水壺放到火上,立等水開。同步阻塞 老張覺得自己有點傻 2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。同步非阻...