同步接口數(shù)據(jù)php 接口數(shù)據(jù)對(duì)接

PHP 同時(shí)多次POST數(shù)據(jù)到同一網(wǎng)站相同接口獲取返回?cái)?shù)據(jù) 用curl 總是會(huì)出現(xiàn)504錯(cuò)誤?

具體什么報(bào)錯(cuò),有圖片嗎?

我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、沙河ssl等。為上千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的沙河網(wǎng)站制作公司

由于nginx默認(rèn)的fastcgi進(jìn)程響應(yīng)緩沖區(qū)太小造成,這種情況下導(dǎo)致fastcgi進(jìn)程被掛起,如果fastcgi服務(wù)隊(duì)這個(gè)掛起處理不是很好的話,就可能提示“504 Gateway Time-out”錯(cuò)誤。

PHP環(huán)境的配置問題,這里我們需要對(duì)php-fpm和nginx進(jìn)行配置修改。因?yàn)檫@種情況下,也會(huì)出現(xiàn)“504 Gateway Time-out”錯(cuò)誤提示。

讓Discuz3.2用戶數(shù)據(jù)同步第三方api接口怎么做

第一步:在網(wǎng)站根文件夾建立“1.php”文件,寫入以下數(shù)據(jù):

?php

define('CHARSET', 'GBK'); //服務(wù)器端數(shù)據(jù)編碼

require './source/class/class_xml.php'; //XML格式的文檔和array的相互轉(zhuǎn)換的類

error_reporting(7);

$charset = $_GET['charset'] ? $_GET['charset'] : $_POST['charset']; //客戶端數(shù)據(jù)編碼

//數(shù)據(jù)轉(zhuǎn)碼

if(strtoupper($charset) != CHARSET) {

foreach($POST as $key = $value) {

$POST[$key] = iconv($charset, CHARSET, $value);

}

foreach($GET as $key = $value) {

$GET[$key] = iconv($charset, CHARSET, $value);

}

}

$data = array('html'='', 'data'=''); //初始化要返回?cái)?shù)據(jù)

$sign = $_GET['sign'] ? $_GET['sign'] : $_POST['sign']; //獲取客戶端請(qǐng)求數(shù)據(jù)的簽名

$clientid = $_GET['clientid'] ? $_GET['clientid'] : $_POST['clientid']; //客戶端ID

$client = get_client_by_clientid($clientid); //得到客戶端的相關(guān)信息

if(empty($client)) { //客戶端不存在

exit('CLIENT_NOT_EXISTS'); //直接返回失敗

}

$datasign = ''; //數(shù)據(jù)簽名

if(!empty($_POST)) {

unset($_POST['sign']); //刪除簽名參數(shù),此參數(shù)不參加簽名計(jì)算

$datasign = get_sign($_POST, $client['key']); //計(jì)算數(shù)據(jù)的簽名

} else {

unset($_GET['sign']); //刪除簽名參數(shù),此參數(shù)不參加簽名計(jì)算

$datasign = get_sign($_GET, $client['key']); //計(jì)算數(shù)據(jù)的簽名

}

if($datasign != $sign) { //簽名不正確

exit('SIGN_ERROR'); //輸入簽名錯(cuò)誤

}

if($_POST['op'] == 'getdata') { //判斷是否為請(qǐng)求數(shù)據(jù)列表

$datalist = $data = array();//數(shù)據(jù)列表

$wherearr = array(); //SQL 條件數(shù)組

//獲取客戶端POST參數(shù)

$start = intval($_POST['start']); //起始數(shù)據(jù)行數(shù)

$limit = intval($_POST['items']); //要顯示多少條數(shù)

$bannedids = addslashes($_POST['bannedids']); //客戶端屏蔽的IDS

$param1 = addslashes($_POST['param1']); //數(shù)據(jù)調(diào)用參數(shù)1,假設(shè)此值要求為string型

$param2 = intval($_POST['param2']); //數(shù)據(jù)調(diào)用參數(shù)2,假設(shè)此值要求為int型

//處理參數(shù)1

if(!empty($param1)){

$wherearr[] = "fieldsparam1='$param1'";

}

//處理參數(shù)2

if(!empty($param2)) {

$wherearr[] = "fieldsparam2='$param2'";

}

//處理客戶端屏蔽的IDS

if(!empty($bannedids)) {

$banids = explode(',', $bannedids);

$wherearr[] = "csid NOT IN (".implode("','", $banids)."')";

}

$where = !empty($wherearr) ? 'WHERE '.implode(' AND ', $wherearr) : ''; //構(gòu)造條件

/*數(shù)據(jù)庫(kù)相關(guān)處理

$query = DB::query('SELECT * FROM '.DB::table('tablename')." $where LIMIT $start, $limit"); //SQL查詢

while($value = DB::fetch($query)) {

//此處為數(shù)據(jù)處理邏輯代碼

$data[] = $value;

}

*/

//以下為臨時(shí)測(cè)試數(shù)據(jù),正式環(huán)境請(qǐng)根據(jù)自己的業(yè)務(wù)做相關(guān)調(diào)整

$url = '';

$data = range($start, $start + $limit);//構(gòu)造臨時(shí)的假數(shù)據(jù)

foreach($data as $value) {

//需要注意: 除 id, title, url, pic, picflag, summary 幾個(gè)字段外,其它字段需要放到 fields 數(shù)組里。

$datalist[] = array(

'id' = $value,

'title' = 'xml_block_title'.$value, //標(biāo)題

'url' = $url.'xml_server.php?csid='.$value, //鏈接地址

'pic' = $url.'/data/attachment/photo.gif', //圖片地址

'picflag' = '0', //0為url 1為本地 2 為ftp遠(yuǎn)程;如果圖片是DX系統(tǒng)中的圖片可以情況設(shè)置為1或2,其它情況為0

'summary' = '', //簡(jiǎn)介

'fields' = array( //配置規(guī)范中fields中指定的字段

'author' = 'xml_user'.$value,

'authorid' = $value,

'field1' = 'field1value'.$value,

'field2' = 'field2value'.$value

)

);

}

$data['data'] = $datalist;

//如果要返回HTML代碼,可直接使用以下代碼

//$data['html'] = 'HTML CODE';

$xml = array2xml($data); //轉(zhuǎn)換為XML文檔

} else if($_GET['op'] == 'getconfig') {

$xml = file_get_contents('block_xml_sample.xml');//block_xml_sample.xml文件中的內(nèi)容為 配置規(guī)范XML文檔示例 的內(nèi)容

} else {

$xml = 'NO_OPERATION';

}

ob_end_clean();

@header("Expires: -1");

@header("Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0", FALSE);

@header("Pragma: no-cache");

header("Content-type: text/xml");

echo $xml;

exit();

/**

* 獲得客戶端信息

* @param $clientid

* @return array 客戶端信息數(shù)組

*/

function get_client_by_clientid($clientid){

$client = array();

$clientid = intval($clientid);

if($clientid) {

/*數(shù)據(jù)庫(kù)相關(guān)處理

$client = DB::fetch_first('SELECT * FROM '.DB::table('clienttable')." clientid='$clientid'"); //SQL查詢

*/

//以下為臨時(shí)測(cè)試數(shù)據(jù),正式環(huán)境請(qǐng)根據(jù)自己的業(yè)務(wù)做相關(guān)調(diào)整

//模擬數(shù)據(jù)庫(kù)

$CLIENTSDB = array(

'100000' = array(

'clientid' = '100000',

'key' = '*654%#(asd94',

),

'200000' = array(

'clientid' = '200000',

'key' = '1#9!(@@34#94',

),

'300000' = array(

'clientid' = '300000',

'key' = '7$@^8^$7as89',

),

'400000' = array(

'clientid' = '400000',

'key' = '23@#86^%432',

),

);

$client = isset($CLIENTSDB[$clientid]) ? $CLIENTSDB[$clientid] : array();

}

return $client;

}

/**

* 生成簽名

* @param array $para 參數(shù)數(shù)組

* @param string $key 加密密鑰

* @return string 簽名

*/

function get_sign($para, $key = ''){

ksort($para);

$signarr = array();

foreach($para as $k = $v) {

$signarr[] = $k.'='.$v;

}

$sign = implode('', $signarr);

$sign = md5($sign.$key);

return $sign;

}

?

注意:不是網(wǎng)站記錄的URL來調(diào)試的時(shí)候,會(huì)出現(xiàn)“Access Denied”,那是網(wǎng)站防止文件外部打開的標(biāo)志,進(jìn)入“./source/class/class_xml.php”暫時(shí)關(guān)閉開頭的二行:

if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {

exit('Access Denied');}

特別注意:99行時(shí)候的“$xml = file_get_contents('block_xml_sample.xml');//block_xml_sample.xml文件中的內(nèi)容為 配置規(guī)范XML文檔示例 的內(nèi)容”;就是這個(gè)文件造成很多人安裝第三方插件不成功的。這個(gè)文件改名稱的同時(shí)記得要修改1.php的99行;

特別注意文件block_xml_sample.xml中的“item id="name"![CDATA[C/S 數(shù)據(jù)類]]/item”中間的“C/S 數(shù)據(jù)類”就是模塊名稱;有的時(shí)候如“item id="version"![CDATA[X1.5]]/item”版本號(hào)不對(duì)也會(huì)報(bào)錯(cuò);修改為網(wǎng)站的版本即可。

第二步:建立“block_xml_sample.xml”文件,寫入如下數(shù)據(jù):

?xml version="1.0" encoding="ISO-8859-1"?

root

item id="Title"![CDATA[Discuz! Block]]/item

item id="Data"

item id="version"![CDATA[X1.5]]/item

item id="name"![CDATA[C/S 數(shù)據(jù)類]]/item

item id="fields"

item id="url"

item id="name"![CDATA[鏈接地址]]/item

item id="formtype"![CDATA[text]]/item

item id="datatype"![CDATA[string]]/item

/item

item id="title"

item id="name"![CDATA[標(biāo)題]]/item

item id="formtype"![CDATA[title]]/item

item id="datatype"![CDATA[title]]/item

/item

item id="pic"

item id="name"![CDATA[圖片]]/item

item id="formtype"![CDATA[pic]]/item

item id="datatype"![CDATA[pic]]/item

/item

item id="summary"

item id="name"![CDATA[簡(jiǎn)介]]/item

item id="formtype"![CDATA[summary]]/item

item id="datatype"![CDATA[summary]]/item

/item

item id="author"

item id="name"![CDATA[作者]]/item

item id="formtype"![CDATA[text]]/item

item id="datatype"![CDATA[text]]/item

/item

item id="authorid"

item id="name"![CDATA[作者ID]]/item

item id="formtype"![CDATA[text]]/item

item id="datatype"![CDATA[int]]/item

/item

item id="field1"

item id="name"![CDATA[字段1]]/item

item id="formtype"![CDATA[text]]/item

item id="datatype"![CDATA[string]]/item

/item

item id="field2"

item id="name"![CDATA[字段2]]/item

item id="formtype"![CDATA[text]]/item

item id="datatype"![CDATA[string]]/item

/item

/item

item id="getsetting"

item id="param1"

item id="title"![CDATA[數(shù)據(jù)調(diào)用參數(shù)1]]/item

item id="type"![CDATA[text]]/item

item id="default"![CDATA[]]/item

/item

item id="param2"

item id="title"![CDATA[數(shù)據(jù)調(diào)用參數(shù)2]]/item

item id="type"![CDATA[mcheckbox]]/item

item id="value"

item id="0"

item id="0"![CDATA[1]]/item

item id="1"![CDATA[選項(xiàng)1]]/item

/item

item id="1"

item id="0"![CDATA[2]]/item

item id="1"![CDATA[選項(xiàng)2]]/item

/item

/item

item id="default"![CDATA[1]]/item

/item

item id="titlelength"

item id="title"![CDATA[標(biāo)題長(zhǎng)度]]/item

item id="type"![CDATA[text]]/item

item id="default"![CDATA[40]]/item

/item

item id="summarylength"

item id="title"![CDATA[簡(jiǎn)介長(zhǎng)度]]/item

item id="type"![CDATA[text]]/item

item id="default"![CDATA[80]]/item

/item

item id="start"

item id="title"![CDATA[起始數(shù)據(jù)行數(shù)]]/item

item id="type"![CDATA[text]]/item

item id="default"![CDATA[0]]/item

/item

/item

item id="style"

item id="0"

item id="name"![CDATA[模板名稱]]/item

item id="template"![CDATA[div class="module cl xl xl1"ul[loop]liema href="home.php?uid={authorid}"FONT COLOR="RED"{author}/FONT/a/ema href="{url}"{title}/a/li[/loop]/ul/div]]/item

/item

item id="1"

item id="name"![CDATA[模板名稱紅色]]/item

item id="template"![CDATA[div class="module cl xl xl1"ul[loop]liemfont color="red"a href="home.php?uid={authorid}"{author}/a/font/ema href="{url}"{title}/a/li[/loop]/ul/div]]/item

/item

/item

/item

/root

第三步:建立第三方模塊

管理平臺(tái) 》 門戶 》 第三方模塊 》 添加:

第三方地址:url/1.php

客戶短ID:200000 見1.php的133行

簽名加密方式:MD5簽名

通信密匙:1#9!(@@34#94

點(diǎn)擊提交,完成模塊建立工作。

第四步:前臺(tái)頁(yè)面調(diào)用:

DIY網(wǎng)頁(yè) 》 DIY 》 高級(jí)模式 》 模塊 》 第三方類

是不是看到剛剛建立的模塊了。

選擇調(diào)用即可。

第五步:擴(kuò)展讀取任一(包括外部)網(wǎng)頁(yè)HTML代碼數(shù)據(jù),新建一個(gè)網(wǎng)頁(yè)“ee.htm”,數(shù)據(jù)規(guī)范如下:

?xml version="1.0" encoding="ISO-8859-1"?

root

item id="html"![CDATA[]]/item

item id="data"

item id="0"

item id="id"![CDATA[14]]/item

item id="title"![CDATA[xml_block_title14]]/item

item id="url"![CDATA[xml_server.php]]/item

item id="pic"![CDATA[nophoto.gif]]/item

item id="picflag"![CDATA[1]]/item

item id="summary"![CDATA[]]/item

item id="fields"

item id="author"![CDATA[xml_user14]]/item

item id="authorid"![CDATA[14]]/item

item id="field1"![CDATA[field1value14]]/item

item id="field2"![CDATA[field2value14]]/item

/item

/item

item id="1"

item id="id"![CDATA[15]]/item

item id="title"![CDATA[xml_block_title15]]/item

item id="url"![CDATA[xml_server.php]]/item

item id="pic"![CDATA[nophoto.gif]]/item

item id="picflag"![CDATA[1]]/item

item id="summary"![CDATA[]]/item

item id="fields"

item id="author"![CDATA[xml_user15]]/item

item id="authorid"![CDATA[15]]/item

item id="field1"![CDATA[field1value15]]/item

item id="field2"![CDATA[field2value15]]/item

/item

/item

/item

/root

第六步:讀取外部網(wǎng)頁(yè)(ee.htm)時(shí)1.PHP的代碼:

適合格式固化的網(wǎng)頁(yè)使用,安全則自己去加上。

?php

define('CHARSET', 'GBK'); //服務(wù)器端數(shù)據(jù)編碼

if($_POST['op'] == 'getdata') { //判斷是否為請(qǐng)求數(shù)據(jù)列表

$xml = file_get_contents('ee.htm');//讀取網(wǎng)頁(yè)數(shù)據(jù) 如下傳遞參數(shù)另..

} else if($_GET['op'] == 'getconfig') {

$xml = file_get_contents('block_xml_sample.xml'); //安裝時(shí)候需要調(diào)用的網(wǎng)頁(yè);為配置規(guī)范XML文檔示例

} else {

$xml = 'NO_OPERATION';

}

ob_end_clean();

@header("Expires: -1");

@header("Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0", FALSE);

@header("Pragma: no-cache");

header("Content-type: text/xml");

echo $xml;

exit();

?

以上的步驟就解決了DZ可以與任一網(wǎng)站數(shù)據(jù)共享的問題

php怎么實(shí)現(xiàn)多個(gè)接口同時(shí)觸發(fā) 對(duì)于先返回的數(shù)據(jù)先處理?

需求描述不準(zhǔn)確。

你是需要在客戶端同時(shí)訪問幾個(gè)接口(接口端用的php)?

1.如果是這個(gè)需求的話,客戶端js自帶異步屬性,用ajax,同時(shí)做幾個(gè)調(diào)用,在回調(diào)里處理數(shù)據(jù)就行了,只是服務(wù)器端,如果有session,需要確保耗時(shí)操作前寫入并關(guān)閉session,不然同一個(gè)客戶端的訪問會(huì)被session卡住(默認(rèn)的文件模式的session)

2.還是需要在php代碼中同時(shí)進(jìn)行多個(gè)接口并發(fā)調(diào)用,在各自返回時(shí)處理,然后整合結(jié)果輸出 ?

這種的話,php本身不支持異步并發(fā)編程,可以考慮用nodejs或者php的擴(kuò)展 swoole 之類的去做

PHP Guzzle接口請(qǐng)求庫(kù)應(yīng)用

Guzzle是一個(gè)PHP的HTTP客戶端,用來發(fā)送接口請(qǐng)求。通常我們應(yīng)用在服務(wù)內(nèi)外部接口調(diào)用場(chǎng)景。Guzzle實(shí)現(xiàn)了HTTP GET, POST,HEAD,OPTIONS,PUT, DELETE等請(qǐng)求方式。支持文件的上傳下載。支持JSON數(shù)據(jù)的請(qǐng)求響應(yīng)。支持接口的同步、異步、并發(fā)請(qǐng)求。基本滿足了我們常用業(yè)務(wù)邏輯。

1、 Guzzle的安裝。

如果我們用PHP的依賴管理工具Composer安裝的話比較簡(jiǎn)單。

2、 Guzzle的代碼引入。

3、 Guzzle的使用。

4、HttpGuzzle封裝類。

PHP 關(guān)于接收接口傳遞數(shù)據(jù)的問題。。

第一個(gè)字母表示類型 count表示ID數(shù)量 / 隔開 ild,ild,ild來記錄數(shù)據(jù)(我是按照你的意思來)

比方

i5/1,2,3,4,5

類型為int 一共5個(gè) 分別1,2,3,4,5

其實(shí)有必要么。。。直接i:1,2,3,4,5不就行了

不一樣的話這樣寫 i:1,2,3|s:4,5,6

懂了嗎?

新聞名稱:同步接口數(shù)據(jù)php 接口數(shù)據(jù)對(duì)接
文章地址:http://muchs.cn/article30/hgeiso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、響應(yīng)式網(wǎng)站、App設(shè)計(jì)、電子商務(wù)、網(wǎng)站制作、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化