首頁 php教程 php手册 php中foreach curl实现多线程例子

php中foreach curl实现多线程例子

May 26, 2016 am 08:20 AM
foreach request

多线程是php不支持的但我们可以通过foreach来伪多线程了,但这个伪多线程速度不一定比单线程要单到哪里去了,具体来看个例子。

在利用foreach语句循环图片URL,并通过CURL将所有图片进行本地保存的函数时 ,出现了只能采集到一个的问题。现将foreach和CURL结合进行多URL请求的方法进行下总如。

方法1:循环请求

1

2

3

4

5

6

7

8

9

10

$sr=array(url_1,url_2,url_3);

foreach ($sr as $k=>$v) {

    $curlPost=$v.'?f=传入参数';

    $ch = curl_init($curlPost) ;

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回

    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回

    $data = curl_exec($ch) ;

    echo $k.&#39;##:&#39;.$data.&#39;<br>&#39;;

}

curl_close($ch);

登入後複製

上面代码需要特别注意的是,curl_close 一定要放在foreach循环结束的外面,如果放在里面的话,就会出现我上面提到的多个IMGURL ,只能采集到一个URL的问题。

方法2:多线程循环

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

<?php

multi_threads_request($nodes){

$mh = curl_multi_init();

$curl_array = array();

foreach($nodes as $i => $url)

{

$curl_array[$i] = curl_init($url);

curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, true);

curl_multi_add_handle($mh, $curl_array[$i]);

}

$running = NULL;

do {

usleep(10000);

curl_multi_exec($mh,$running);

} while($running > 0);

$res = array();

foreach($nodes as $i => $url)

{

$res[$url] = curl_multi_getcontent($curl_array[$i]);

}

foreach($nodes as $i => $url){

curl_multi_remove_handle($mh, $curl_array[$i]);

}

curl_multi_close($mh);

return $res;

}

print_r(multi_threads_request(array(

    &#39;http://www.phprm.com&#39;,

    &#39;http://qq.phprm.com&#39;,

));

登入後複製

这里主要利用curl_multi_init()实现多个url 的请求,不过由于php自身并不支持多线程。所以伪多线程速度也不见得会比单线程快。


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1242
24
Java ArrayList遍歷時使用foreach和iterator刪除元素的差異是什麼? Java ArrayList遍歷時使用foreach和iterator刪除元素的差異是什麼? Apr 27, 2023 pm 03:40 PM

一、Iterator和foreach的區別多態差異(foreach底層就是Iterator)Iterator是一個介面類型,他不關心集合或數組的類型;for和foreach都需要先知道集合的類型,甚至是集合內元素的類型; 1.為啥說foreach底層就是Iterator寫的程式碼:反編譯程式碼:二、foreach與iterator時remove的差別先來看阿里java開發手冊但1的時候不會報錯,2的時候就會報錯(java. util.ConcurrentModificationException)首

php如何判斷foreach循環到第幾個 php如何判斷foreach循環到第幾個 Jul 10, 2023 pm 02:18 PM

php判斷foreach循環到第幾個的步驟:1、創建一個「$fruits」的數組;2、創建一個計數器變數「$counter」初始值為0;3、使用「foreach」循環遍歷數組,並在循環體中增加計數器變數的值,再輸出每個元素和它們的索引;4、在「foreach」循環體外輸出計數器變數的值,以確認循環到了第幾個元素。

php request什麼意思 php request什麼意思 Jul 07, 2021 pm 01:49 PM

request的中文意思是“請求”,是php中的一個全域變量,是一個包含了“$_POST”、“$_GET”和“$_COOKIE”的數組。 「$_REQUEST」變數可以取得POST或GET方式提交的資料、COOKIE資訊。

PHP傳回一個鍵值翻轉後的陣列 PHP傳回一個鍵值翻轉後的陣列 Mar 21, 2024 pm 02:10 PM

這篇文章將為大家詳細講解有關PHP返回一個鍵值翻轉後的數組,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。 PHP鍵值翻轉數組鍵值翻轉是一種對數組進行的操作,它將數組中的鍵和值進行交換,產生一個新的數組,其中原始鍵作為值,原始值作為鍵。實作方法在php中,可以透過以下方法對陣列進行鍵值翻轉:array_flip()函數:array_flip()函數專門用於鍵值翻轉操作。它接收一個數組作為參數,並傳回一個新的數組,其中鍵和值已交換。 $original_array=[

Python 3.x 中如何使用urllib.request.urlopen()函數發送GET請求 Python 3.x 中如何使用urllib.request.urlopen()函數發送GET請求 Jul 30, 2023 am 11:28 AM

Python3.x中如何使用urllib.request.urlopen()函數發送GET請求在網路程式設計中,我們經常需要透過發送HTTP請求來取得遠端伺服器的資料。在Python中,我們可以使用urllib模組中的urllib.request.urlopen()函數來傳送HTTP請求,並取得伺服器回傳的回應。本文將介紹如何使用

怎麼將Vue3 Axios攔截器封裝成request文件 怎麼將Vue3 Axios攔截器封裝成request文件 May 19, 2023 am 11:49 AM

1.建立一個名為request.js的新文件,並匯入Axios:importaxiosfrom'axios';2、建立一個名為request的函數,並將其匯出:這將建立一個名為request的函數,並將其設定為具有基本URL的新的Axios實例。若要在封裝的Axios實例中新增逾時設置,可以在建立Axios實例時傳遞timeout選項。 exportconstrequest=axios.create({baseURL:'https://example.

PHP中的request是什麼 PHP中的request是什麼 Jun 01, 2023 am 10:12 AM

PHP中的request是指請求,它是PHP中的一個超全局變量,用於收集HTML表單提交的數據,以及URL中的參數, 可以同時獲取GET和POST請求的數據, 注意$_request是一個關聯數組,其中的鍵是表單欄位的名稱,值是表單欄位的值。使用$_request變數時,應始終對使用者輸入的資料進行驗證和過濾,以避免安全性問題。

PHP中的Request物件是什麼? PHP中的Request物件是什麼? Feb 27, 2024 pm 09:06 PM

PHP中的Request物件是用來處理客戶端傳送到伺服器的HTTP請求的物件。透過Request對象,我們可以取得客戶端的請求訊息,例如請求方法、請求頭資訊、請求參數等,從而實現對請求的處理和回應。在PHP中,可以使用$_REQUEST、$_GET、$_POST等全域變數來取得要求的信息,但是這些變數並不是對象,而是陣列。為了更靈活和方便地處理請求訊息,可

See all articles