萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> 實現PHP多線程異步請求的3種方法

實現PHP多線程異步請求的3種方法

 實現PHP多線程異步請求的方法有很多,在本文整理了3種不多的常用方法,大家可以參考下

在網上看過很多版本的PHP異步請求方法,這裡簡單總結幾個常用方法分享給大家    1、用CURL實現一步請求    CURL擴展是我們在開發過程中最常用的一種方法,他是一個強大的HTTP命令行工具,可以模擬POST/GET等HTTP請求,然後得到和提取數據,顯示在"標准輸出"(stdout)上面。    示例:   代碼如下: <?php  $cl = curl_init();  $curl_opt = array(CURLOPT_URL, 'http://www.uncletoo.com/demo.php',  CURLOPT_RETURNTRANSFER, 1,  CURLOPT_TIMEOUT, 1,);  curl_setopt_array($cl, $curl_opt);  curl_exec($ch);  curl_close($ch);  ?>    由於CUROPT_TIMEOUT屬性最小值為1,這就意味著在客戶端必須等待1秒,這也是使用CURL方法的缺點    2、用popen()函數實現異步請求    語法格式:popen(command,mode)    示例:   代碼如下: <?php  $file = popen("/bin/ls","r");  //這裡是要執行的代碼  //...  pclose($file);  ?>    popen()函數直接打開一個指向進程的管道,速度快,即時相應。但是這個函數是單項的,要麼讀要麼寫,而且如果並發數較大,則會產生大量進程,給服務器造成負擔。    另外,如同示例中一樣,程序結束後一定要用pclose()來關閉。    3、用fscokopen()函數實現異步請求    我們在平時開發郵件發送功能等socket編程時,都會用到這個函數,在使用這個函數之前,我們要在PHP.ini 中開啟 allow_url_fopen 選項,另外在變成時,我們還要自己手動拼接出header部分。    示例:   代碼如下: $fp = fsockopen("www.uncletoo.com/demo.php", 80, $errno, $errstr, 30);  if (!$fp) {  echo "$errstr ($errno)<br />n";  } else {  $out = "GET /index.php / HTTP/1.1rn";  $out .= "Host: www.uncletoo.comrn";  $out .= "Connection: Closernrn";    fwrite($fp, $out);  /*這裡忽略執行結果  *測試時可以打開  while (!feof($fp)) {  echo fgets($fp, 128);  }*/  fclose($fp);  }    PHP本身沒有多線程,但是我們可以用其他方式來實現多線程的效果,上面列舉的三種方式都有各自的優缺點,大家在使用時可以根據程序的需要擇優選擇。    UncleToo經驗尚淺,這裡就簡單總結了這麼多,如果有其他更好的實現PHP多線程的方法可以一起討論!   
copyright © 萬盛學電腦網 all rights reserved