Heim 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:循环请求

$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);
Nach dem Login kopieren

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

方法2:多线程循环

<?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;,
));
Nach dem Login kopieren

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


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist der Unterschied zwischen der Verwendung von foreach und iterator zum Löschen von Elementen beim Durchlaufen von Java ArrayList? Was ist der Unterschied zwischen der Verwendung von foreach und iterator zum Löschen von Elementen beim Durchlaufen von Java ArrayList? Apr 27, 2023 pm 03:40 PM

1. Der Unterschied zwischen Iterator und foreach ist der polymorphe Unterschied (die unterste Ebene von foreach ist Iterator ein Schnittstellentyp, und es ist egal, ob for und foreach der Typ bekannt ist). 1. Warum heißt es, dass die unterste Ebene von foreach der von Iterator geschriebene Code ist: 2. Der Unterschied zwischen „remove in foreach“ und „iterator“. im Alibaba Java Development Manual, aber in Fall 1 wird kein Fehler gemeldet, und in Fall 2 wird zuerst ein Fehler gemeldet (java. util.ConcurrentModificationException).

So bestimmen Sie die Anzahl der foreach-Schleifen in PHP So bestimmen Sie die Anzahl der foreach-Schleifen in PHP Jul 10, 2023 pm 02:18 PM

​Die Schritte für PHP, um die Nummer der foreach-Schleife zu bestimmen: 1. Erstellen Sie ein Array von „$fruits“; 2. Erstellen Sie eine Zählervariable „$counter“ mit einem Anfangswert von 0. 3. Verwenden Sie „foreach“, um eine Schleife durchzuführen durch das Array und Erhöhen Sie den Wert der Zählervariablen im Schleifenkörper und geben Sie dann jedes Element und seinen Index aus. 4. Geben Sie den Wert der Zählervariablen außerhalb der „foreach“-Schleife aus, um zu bestätigen, welches Element die Schleife erreicht.

Was bedeutet PHP-Anfrage? Was bedeutet PHP-Anfrage? Jul 07, 2021 pm 01:49 PM

Die chinesische Bedeutung von request ist „request“. Es ist eine globale Variable in PHP und ein Array, das „$_POST“, „$_GET“ und „$_COOKIE“ enthält. Die Variable „$_REQUEST“ kann per POST oder GET übermittelte Daten und COOKIE-Informationen abrufen.

So verwenden Sie die Funktion urllib.request.urlopen() zum Senden einer GET-Anfrage in Python 3.x So verwenden Sie die Funktion urllib.request.urlopen() zum Senden einer GET-Anfrage in Python 3.x Jul 30, 2023 am 11:28 AM

So verwenden Sie die Funktion urllib.request.urlopen() in Python3.x, um eine GET-Anfrage zu senden. Bei der Netzwerkprogrammierung müssen wir häufig Daten von einem Remote-Server erhalten, indem wir eine HTTP-Anfrage senden. In Python können wir die Funktion urllib.request.urlopen() im Modul urllib verwenden, um eine HTTP-Anfrage zu senden und die vom Server zurückgegebene Antwort zu erhalten. In diesem Artikel wird die Verwendung vorgestellt

PHP gibt ein Array mit umgedrehten Schlüsseln zurück PHP gibt ein Array mit umgedrehten Schlüsseln zurück Mar 21, 2024 pm 02:10 PM

In diesem Artikel wird ausführlich erläutert, wie PHP nach dem Umdrehen eines Schlüsselwerts ein Array zurückgibt. Der Herausgeber hält dies für recht praktisch, daher teile ich es Ihnen als Referenz mit. Ich hoffe, dass Sie nach dem Lesen dieses Artikels etwas gewinnen können. PHP-Schlüsselwert-Flip Der Array-Schlüsselwert-Flip ist eine Operation für ein Array, bei der die Schlüssel und Werte im Array ausgetauscht werden, um ein neues Array mit dem ursprünglichen Schlüssel als Wert und dem ursprünglichen Wert als Schlüssel zu generieren. Implementierungsmethode In PHP können Sie das Schlüsselwert-Umdrehen eines Arrays mit den folgenden Methoden durchführen: array_flip()-Funktion: Die array_flip()-Funktion wird speziell für Schlüsselwert-Umdrehungsvorgänge verwendet. Es erhält ein Array als Argument und gibt ein neues Array mit vertauschten Schlüsseln und Werten zurück. $original_array=[

So kapseln Sie den Vue3 Axios-Interceptor in eine Anforderungsdatei So kapseln Sie den Vue3 Axios-Interceptor in eine Anforderungsdatei May 19, 2023 am 11:49 AM

1. Erstellen Sie eine neue Datei namens request.js und importieren Sie Axios: importaxiosfrom'axios'; 2. Erstellen Sie eine Funktion namens request und exportieren Sie sie: Dadurch wird eine Funktion namens request erstellt und exportiert. Richten Sie eine neue Axios-Instanz mit einer Basis-URL ein . Um Timeout-Einstellungen in einer umschlossenen Axios-Instanz hinzuzufügen, können Sie beim Erstellen der Axios-Instanz die Timeout-Option übergeben. exportconstrequest=axios.create({baseURL:'https://example.

Was ist das Request-Objekt in PHP? Was ist das Request-Objekt in PHP? Feb 27, 2024 pm 09:06 PM

Das Request-Objekt in PHP ist ein Objekt, das zur Verarbeitung von HTTP-Anfragen verwendet wird, die vom Client an den Server gesendet werden. Über das Request-Objekt können wir die Anforderungsinformationen des Clients abrufen, z. B. die Anforderungsmethode, die Anforderungsheaderinformationen, die Anforderungsparameter usw., um die Anforderung zu verarbeiten und zu beantworten. In PHP können Sie globale Variablen wie $_REQUEST, $_GET, $_POST usw. verwenden, um angeforderte Informationen zu erhalten, aber diese Variablen sind keine Objekte, sondern Arrays. Um Anfrageinformationen flexibler und bequemer bearbeiten zu können, können Sie dies tun

Was ist eine Anfrage in PHP? Was ist eine Anfrage in PHP? Jun 01, 2023 am 10:12 AM

Request in PHP ist eine super globale Variable in PHP. Sie wird zum Sammeln von Daten verwendet, die von HTML-Formularen und Parametern in URLs übermittelt werden. Sie kann Daten aus GET- und POST-Anfragen abrufen ein assoziatives Array, wobei die Schlüssel die Namen der Formularfelder und die Werte die Werte der Formularfelder sind. Bei Verwendung der Variablen $_request sollten vom Benutzer eingegebene Daten immer validiert und gefiltert werden, um Sicherheitsprobleme zu vermeiden.

See all articles