簡體   English   中英

PHP中同時進行多個API調用

[英]Multiple API calls simultaneously in PHP

我正處於搜索頁面的工作場景中。

此搜索頁面必須同時為5個以下搜索引擎進行API調用:

  1. http://www.kijiji.ca/
  2. http://www.lespac.com/
  3. http://www.autonet.ca/
  4. http://www.autotrader.ca/
  5. http://www.carpages.ca/

我們的想法是從所有5個API調用中收集數據並存儲並將其呈現給用戶以獲取匹配的數據。

讓我舉一個搜索引擎API調用的例子,讓我們說'KIJIJI'。

示例網址: http://www.kijiji.ca/b-autos-camions/grand-{CITY}/autre+type+de+carrosserie__berline__bicorps__cabriolet__coupe__familiale-{MAKE}-{MODEL}-{MIN YEAR}__/c174l80002a138a54a1000054a68?price=__{Max Price}&kilometres=__{MAX KM} http://www.kijiji.ca/b-autos-camions/grand-{CITY}/autre+type+de+carrosserie__berline__bicorps__cabriolet__coupe__familiale-{MAKE}-{MODEL}-{MIN YEAR}__/c174l80002a138a54a1000054a68?price=__{Max Price}&kilometres=__{MAX KM}

令牌{CITY},{MAKE}等將被用戶輸入的搜索值替換。

搜索具有實際價值的網址:

http://www.kijiji.ca/b-autos-camions/grand-montreal/autre+type+de+carrosserie__berline__bicorps__cabriolet__coupe__familiale-Honda-Accord-2010__/c174l80002a138a54a1000054a68?price=__5000&kilometres=__13000

PAGE EXTRACTOR網址:

https://api.import.io/store/data/7ddb89d9-1dba-464f-a8e1-d522b50e8c4c/_query?input/webpage/url=http://www.kijiji.ca/b-autos-camions/grand-montreal/autre+type+de+carrosserie__berline__bicorps__cabriolet__coupe__familiale-Honda-Accord-2010__/c174l80002a138a54a1000054a68?price=__5000&kilometres=__13000&_user=8df097bf-2f5d-4509-b13e-299d05bad826&_apikey=H76otVMlVTG2KIW9fCZjWPtf4KzWFmlNBzbD2WIy9qOKSwIPgGxmUFVmTV9dDrORwcTtMBS1zZVLXSdEd9yfPQ%3D%3D

基本上,搜索URL進入頁面提取器URL以獲取所有找到的結果的列表。 api調用將大量的URL返回到頁面。

個人結果提取器:

https://api.import.io/store/data/e51c6ba5-fbf0-4614-b6a1-4d522b6b6ecf/_query?input/webpage/url=http://www.kijiji.ca/v-autos-camions/laval-rive-nord/2013-honda-accord-sport-sedan/1062203732?siteLocale=en_CA&_user=8df097bf-2f5d-4509-b13e-299d05bad826&_apikey=H76otVMlVTG2KIW9fCZjWPtf4KzWFmlNBzbD2WIy9qOKSwIPgGxmUFVmTV9dDrORwcTtMBS1zZVLXSdEd9yfPQ%3D%3D

第二個api調用返回每個URL的信息。

您可以通過將樣本,頁面提取器和單個結果提取器復制並粘貼到瀏覽器中來進行實時測試。 返回json結果。

現在問題是我必須調用以上所有5個搜索引擎進行單一搜索查詢。 我對每個搜索引擎都有幫助。

請看下面的圖片。

在此輸入圖像描述

如何通過調用單個搜索查詢的多個api調用來實現此目的? 它涉及多線程嗎?

要在PHP中同時發布某些內容,您需要某種非阻塞I / O - 類似於node.js或javascript中的ajax。 您可以按順序(逐個)執行所有操作,但根據所有服務的響應時間(5 x響應時間+最終處理)將耗費時間。 您可以嘗試使用ReactPHP或直接PHP擴展,例如libevlibevent用於非阻塞I / O. 從PHP 5.5開始,您可以使用yield進行異步模擬

它不是完全多線程而是異步處理。 我個人從未需要在PHP中使用任何這些技術,因此我無法提供代碼示例或其他經驗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM