Heim  >  Artikel  >  Backend-Entwicklung  >  Die PHP-Curl-Stapelverarbeitung realisiert kontrollierbare gleichzeitige und asynchrone Vorgänge

Die PHP-Curl-Stapelverarbeitung realisiert kontrollierbare gleichzeitige und asynchrone Vorgänge

不言
不言Original
2018-05-09 10:26:321080Durchsuche

Dieser Artikel stellt hauptsächlich die kontrollierbare Parallelität und den asynchronen Betrieb der PHP-Curl-Stapelverarbeitung vor. Jetzt kann ich ihn mit Ihnen teilen.

Die Beispiele in diesem Artikel Die beschriebene PHP-Curl-Stapelverarbeitung implementiert steuerbare gleichzeitige asynchrone Vorgänge. Geben Sie es als Referenz an alle weiter. Die Details lauten wie folgt:

Normalerweise wird cURL in PHP blockierend ausgeführt, was bedeutet, dass Sie nach dem Erstellen einer cURL-Anfrage warten müssen, bis sie erfolgreich ausgeführt wird aus, bevor Sie die nächste Anfrage ausführen: API CURL

wird im Allgemeinen für den Schnittstellenzugriff in tatsächlichen Projekten oder beim Schreiben Ihrer eigenen Gadgets (z. B. Nachrichtenaggregation, Überwachung von Rohstoffpreisen, Preisvergleich) bevorzugt Sie müssen Daten von einer Website oder einer API-Schnittstelle eines Drittanbieters abrufen, um die Leistung zu verbessern. Sie können die von cURL bereitgestellten curl_multi_*-Familienfunktionen verwenden, um eine einfache Parallelität zu erreichen Funktioniert gut, wenn es verwendet wird, hat keine Nebenwirkungen und die Anzahl der Parallelitäten ist kontrollierbar. Lassen Sie Ihrer Fantasie freien Lauf

<?php
include &#39;curl.class.php&#39;;
function callback($response, $info, $error, $request)
{
 echo &#39;response:<br>&#39;;
 print_r($response);
 echo &#39;<br>&#39; . date("Y-m-d H:i:s") . &#39;   <br>&#39;;
 echo &#39;<br>&#39; . str_repeat("-", 100) . &#39;<br>&#39;;
}
$USER_COOKIE = (!empty($_REQUEST[&#39;cookie&#39;])) ? $_REQUEST[&#39;cookie&#39;] : file_get_contents("cookie.txt");
$curl = new Curl ("callback");
$data = array(
 array(
  &#39;url&#39; => &#39;http://dyactive2.vip.xunlei.com/com_sign/?game=qmr&type=rec_gametime&referfrom=&rt=0.42521539455332336&#39;, //秦美人
  &#39;method&#39; => &#39;POST&#39;,
  &#39;post_data&#39; => &#39;&#39;,
  &#39;header&#39; => null,
  &#39;options&#39; => array(
   CURLOPT_REFERER => "http://niu.xunlei.com/entergame/?gameNo=qmr&fenQuNum=3",
   CURLOPT_COOKIE => $USER_COOKIE,
  )
 ),
 array(
  &#39;url&#39; => &#39;http://dyactive2.vip.xunlei.com/com_sign/?game=sq&type=rec_gametime&referfrom=&rt=0.42521539455332336&#39;, //神曲
  &#39;method&#39; => &#39;POST&#39;,
  &#39;post_data&#39; => &#39;&#39;,
  &#39;header&#39; => null,
  &#39;options&#39; => array(
   CURLOPT_REFERER => "http://niu.xunlei.com/entergame/?gameNo=sq&fenQuNum=41",
   CURLOPT_COOKIE => $USER_COOKIE,
  )
 ),
 array(
  &#39;url&#39; => &#39;http://dyactive2.vip.xunlei.com/com_sign/?game=frxz&type=rec_gametime&referfrom=&rt=0.42521539455332336&#39;, //凡人修真
  &#39;method&#39; => &#39;POST&#39;,
  &#39;post_data&#39; => &#39;&#39;,
  &#39;header&#39; => null,
  &#39;options&#39; => array(
   CURLOPT_REFERER => "http://niu.xunlei.com/entergame/?gameNo=frxz&fenQuNum=3",
   CURLOPT_COOKIE => $USER_COOKIE,
  )
 ),
 array(
  &#39;url&#39; => &#39;http://dyactive2.vip.xunlei.com/com_sign/?game=smxj&type=rec_gametime&referfrom=&rt=0.42521539455332336&#39;, //神魔仙界
  &#39;method&#39; => &#39;POST&#39;,
  &#39;post_data&#39; => &#39;&#39;,
  &#39;header&#39; => null,
  &#39;options&#39; => array(
   CURLOPT_REFERER => "http://niu.xunlei.com/entergame/?gameNo=smxj&fenQuNum=2",
   CURLOPT_COOKIE => $USER_COOKIE,
  )
 ),
 array(
  &#39;url&#39; => &#39;http://dyactive2.vip.xunlei.com/com_sign/?game=qsqy&type=rec_gametime&referfrom=&rt=0.42521539455332336&#39;, //倾世情缘
  &#39;method&#39; => &#39;POST&#39;,
  &#39;post_data&#39; => &#39;&#39;,
  &#39;header&#39; => null,
  &#39;options&#39; => array(
   CURLOPT_REFERER => "http://niu.xunlei.com/entergame/?gameNo=qsqy&fenQuNum=11",
   CURLOPT_COOKIE => $USER_COOKIE,
  )
 ),
);
foreach ($data as $val) {
 $request = new Curl_request ($val [&#39;url&#39;], $val [&#39;method&#39;], $val [&#39;post_data&#39;], $val [&#39;header&#39;], $val [&#39;options&#39;]);
 $curl->add($request);
}
$curl->execute();
echo $curl->display_errors();

Das Obige ist der gesamte Inhalt von In diesem Artikel finden Sie weitere verwandte Inhalte auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

PHP Curl sendet eine gefälschte Anfrage

PHP CURL erhält Cookies, um ein Codebeispiel für die Anmeldemethode zu simulieren

Das obige ist der detaillierte Inhalt vonDie PHP-Curl-Stapelverarbeitung realisiert kontrollierbare gleichzeitige und asynchrone Vorgänge. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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