--
popen, pclose
應用場景為需要大量上傳 HTTP,一般迴圈處理依序需要浪費時間,如果沒有順序關係可以使用「並行」來完成。
使用起來很簡單,有侷限性,不過應用場景可以套用那程式就很簡單,類似這樣子
必須先把上傳的程式拆開獨立,然後使用 popen() 執行
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $url = 'https://domain.name'; $p = []; for( $i=1; $i<=20; $i++ ){ $p[$i] = popen('php /opt/Server/WWW/x/http_upload.php '. $i .' '. $url . ' "{}"', 'w'); } // 必須有此 pclose() 迴圈,才會並行處理 for( $i=1; $i<=20; $i++ ) { pclose($p[$i]); } |
http_upload.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php echo $argv[1]."\n"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $argv[2]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); curl_setopt($ch, CURLOPT_TIMEOUT, 2); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $argv[3]); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); curl_exec ($ch); $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); echo $argv[1] .':'. $status_code."\n"; |
--
3,485 total views, 6 views today