ホームページ  >  記事  >  バックエンド開発  >  PHPカールバッチ処理により、制御可能な同時および非同期操作を実現

PHPカールバッチ処理により、制御可能な同時および非同期操作を実現

不言
不言オリジナル
2018-05-09 10:26:321084ブラウズ

この記事では主に、phpのcurlバッチ処理の制御可能な同時実行性と非同期操作について紹介します。必要な方は参考にしてください。この記事の例はphpの実装について説明します。カールのバッチ処理を制御します。参考までに皆さんと共有してください。詳細は次のとおりです。

通常、PHP の cURL はブロック方式で実行されます。つまり、cURL リクエストを作成した後、それが正常に実行されるまで待つか、タイムアウトしてから実行する必要があります。次のリクエスト: API インターフェイス アクセス 一般的には CURL が第一選択です

実際のプロジェクトや独自のガジェット (ニュースの集約、商品価格の監視、価格比較など) を作成するプロセスでは、通常、第 3 のリクエストからデータを取得する必要があります。 URL キューを処理する必要がある場合、パフォーマンスを向上させるために、cURL が提供する

ファミリ関数を使用すると、副作用がなく、簡単な同時実行を実現できます。同時実行の数は制御可能であり、多くのアプリケーションがあります。想像力を働かせてください

<?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();
curl_multi_*

上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトを参照してください。 関連する推奨事項:

phpcurlは偽のリクエストを送信します

php CURLはCookieを取得してログインメソッドのコード例をシミュレートします

以上がPHPカールバッチ処理により、制御可能な同時および非同期操作を実現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。