簡體   English   中英

從API服務上的PHP腳本調用遠程PHP腳本

[英]Calling remote PHP script from a PHP script on an API service

我正在設計一個PHP API,我給我的用戶一個php文件(core.php)添加到他們的服務器上。 然后使用它們只需要include_once('api / core.php')。 在core.php里面我需要創建一些只從我的主服務器解析json文件的函數。

讓我們說他們需要一個完整的用戶列表,所以他們必須做類似的事情:

include_once('api/core.php');
print_r(myApi_list('user','all'));

core.php里面,函數將是這樣的:

function myApi_list($pa, $pb) {
  if($pa == 'user') {
    //here will be a code that call my server
    return resp;
  } 
  //more stuf
}

當然,我的服務器上還會有另一個腳本來處理sql查詢和安全性。 我的問題是,如果我使用file_get_contents,從core.php調用我的服務器的最佳方法是什么? 並告訴我的服務器腳本回答可能是一個json文件(然后core.php解析那個)? 或者我應該使用cUrl? 由於這是一個API,我更喜歡在php服務器上使用更可能默認處於活動狀態的模塊。

您認為在這種情況下最好的方法是什么?

如果你回來的只是JSON,請使用file_get_contents() 它更容易,編碼時間更短。 只需將主服務器上腳本的標題設置為header('Content-type: text/json'); ,然后使用file_get_contents()並解析該響應。

如果響應為空,則存在無效的api請求(或者該查詢沒有數據,可以通過返回“未找到數據”來捕獲)。 如果響應的解析為null ,則服務器上存在錯誤。

我的推薦是cURL。

函數file_get_contents的使用本身非常有限。 它只能返回數據或false。

另一方面,cURL有很多選擇。 所以你可以制作干凈錯誤消息出錯,404 api停業,500服務器停機等。此外cURL有選擇使用POST值,file_get_contents沒有。

另外file_get_contents有allow_url_foppen的限制(可以禁用用於外部地址的函數),請參閱此問題 (這也建議使用cURL over file get contents

暫無
暫無

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

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