phpjson數據推送(php提交json)

本文目錄一覽:

php如何發送和接收JSON數據

對於json,PHP有對應的方法進行操作。

一般而言,json會以字元串形式傳給PHP腳本,一般都是放在$_POST裡面,

14

?php

// 接收

$json_parameter = $_POST[‘json_str’];

// 處理, 變成數組

$array = json_decode($json_parameter);

// PHP 把數組數據變成json格式字元串,發給頁面

$demo = array(

‘key’ = ‘value’,

‘key2’ = ‘value2’

);

$demo_json = json_encode($demo); // 格式是{“key”:”value”,”key2″:”value2″}

echo $demo_json;

如何在php後端及時推送消息給客戶端

?php

use Workerman\Worker;

require_once ‘./Workerman/Autoloader.php’;

// 初始化一個worker容器,監聽1234埠

$worker = new Worker(‘websocket://0.0.0.0:1234’);

// 這裡進程數必須設置為1

$worker-count = 1;

// worker進程啟動後建立一個內部通訊埠

$worker-onWorkerStart = function($worker)

{

// 開啟一個內部埠,方便內部系統推送數據,Text協議格式 文本+換行符

$inner_text_worker = new Worker(‘Text://0.0.0.0:5678’);

$inner_text_worker-onMessage = function($connection, $buffer)

{

global $worker;

// $data數組格式,裡面有uid,表示向那個uid的頁面推送數據

$data = json_decode($buffer, true);

$uid = $data[‘uid’];

// 通過workerman,向uid的頁面推送數據

$ret = sendMessageByUid($uid, $buffer);

// 返回推送結果

$connection-send($ret ? ‘ok’ : ‘fail’);

};

$inner_text_worker-listen();

};

// 新增加一個屬性,用來保存uid到connection的映射

$worker-uidConnections = array();

// 當有客戶端發來消息時執行的回調函數

$worker-onMessage = function($connection, $data)use($worker)

{

// 判斷當前客戶端是否已經驗證,既是否設置了uid

if(!isset($connection-uid))

{

// 沒驗證的話把第一個包當做uid(這裡為了方便演示,沒做真正的驗證)

$connection-uid = $data;

/* 保存uid到connection的映射,這樣可以方便的通過uid查找connection,

* 實現針對特定uid推送數據

*/

$worker-uidConnections[$connection-uid] = $connection;

return;

}

};

// 當有客戶端連接斷開時

$worker-onClose = function($connection)use($worker)

{

global $worker;

if(isset($connection-uid))

{

// 連接斷開時刪除映射

unset($worker-uidConnections[$connection-uid]);

}

};

// 向所有驗證的用戶推送數據

function broadcast($message)

{

global $worker;

foreach($worker-uidConnections as $connection)

{

$connection-send($message);

}

}

// 針對uid推送數據

function sendMessageByUid($uid, $message)

{

global $worker;

if(isset($worker-uidConnections[$uid]))

{

$connection = $worker-uidConnections[$uid];

$connection-send($message);

return true;

}

return false;

}

// 運行所有的worker(其實當前只定義了一個)

Worker::runAll();

啟動後端服務

php push.php start -d

前端接收推送的js代碼

var ws = new WebSocket(‘ws://127.0.0.1:1234’);

ws.onopen = function(){

var uid = ‘uid1’;

ws.send(uid);

};

ws.onmessage = function(e){

alert(e.data);

};

後端推送消息的代碼

// 建立socket連接到內部推送埠

$client = stream_socket_client(‘tcp://127.0.0.1:5678’, $errno, $errmsg, 1, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT);

// 推送的數據,包含uid欄位,表示是給這個uid推送

$data = array(‘uid’=’uid1’, ‘percent’=’88%’);

// 發送數據,注意5678埠是Text協議的埠,Text協議需要在數據末尾加上換行符

fwrite($client, json_encode($data).”\n”);

// 讀取推送結果

echo fread($client, 8192);

這裡的uid不一定是用戶的id,也可以理解為任務id即 taskid

以上代碼親測可以直接使用

PHP如何通過Post請求發送Json數據

首先要把數據轉換成json格式,再通過curl方法調用介面並傳參數

代碼如下:

$keyword = urlencode($_POST[‘keyword’]);

$parameters = json_encode(array(‘keyWord’=$keyword,’areaCode’=’*’));

$post_data[‘appToken’] = “323ds7674354fds32fdsda60173”;//隨便寫的

$post_data[‘parameters’] = $parameters;

$url = ”;//隨便寫的

$ch = curl_init();

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);//用post方法傳送參數

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec($ch);

curl_close($ch);

之後就返回數據即可。

php的json怎麼傳到前台?

json.php

?php

echo ‘{“key”:”value”}’;

js

$.get(‘json.php’,function(data){console.info(data);});

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/239922.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:19
下一篇 2024-12-12 12:19

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python爬取公交數據

    本文將從以下幾個方面詳細闡述python爬取公交數據的方法: 一、準備工作 1、安裝相關庫 import requests from bs4 import BeautifulSou…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29
  • Python數據標準差標準化

    本文將為大家詳細講述Python中的數據標準差標準化,以及涉及到的相關知識。 一、什麼是數據標準差標準化 數據標準差標準化是數據處理中的一種方法,通過對數據進行標準差標準化可以將不…

    編程 2025-04-29
  • 如何使用Python讀取CSV數據

    在數據分析、數據挖掘和機器學習等領域,CSV文件是一種非常常見的文件格式。Python作為一種廣泛使用的編程語言,也提供了方便易用的CSV讀取庫。本文將介紹如何使用Python讀取…

    編程 2025-04-29
  • Python如何打亂數據集

    本文將從多個方面詳細闡述Python打亂數據集的方法。 一、shuffle函數原理 shuffle函數是Python中的一個內置函數,主要作用是將一個可迭代對象的元素隨機排序。 在…

    編程 2025-04-29

發表回復

登錄後才能評論