當php代碼要對外請求多個接口的時候 , 能夠使用下面的方式並行執行多個請求php
主要是使用curl_multi_exec函數實現nginx
代碼中請求的test.php文件 , 是sleep(10)秒curl
若是按傳統的逐行執行的方式 , 請求兩次這個接口代碼會阻塞20秒的時間 , 如今使用同時並行執行的方式,代碼只會阻塞10秒函數
而且請求也是會同時到達對方接口的url
<?php // 建立一對cURL資源 $ch1 = curl_init(); $ch2 = curl_init(); // 設置URL和相應的選項 curl_setopt($ch1, CURLOPT_URL, "http://81.69.45.114/test/test.php"); curl_setopt($ch1, CURLOPT_HEADER, 0); curl_setopt($ch2, CURLOPT_URL, "http://81.69.45.114/test/test.php"); curl_setopt($ch2, CURLOPT_HEADER, 0); // 建立批處理cURL句柄 $mh = curl_multi_init(); // 增長2個句柄 curl_multi_add_handle($mh,$ch1); curl_multi_add_handle($mh,$ch2); $active = null; // 執行批處理句柄 do { $mrc = curl_multi_exec($mh, $active); var_dump($mrc); } while ($mrc == CURLM_CALL_MULTI_PERFORM); while ($active && $mrc == CURLM_OK) { if (curl_multi_select($mh) != -1) { do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); } } // 關閉所有句柄 curl_multi_remove_handle($mh, $ch1); curl_multi_remove_handle($mh, $ch2); curl_multi_close($mh);
執行後nginx日誌的展現:spa