包含和php腳本的通信實例的詞條

本文目錄一覽:

C#使用PHP服務端的Web Service通信實例

這篇文章主要介紹了C#使用PHP服務端的Web

Service通信實例,需要的朋友可以參考下

註:本例中構建Web

Service採用SOAP方式,通過php插件NuSoap來搭建SOAP伺服器。

代碼如下:

?

require_once(“lib/nusoap.php”);

//調用NuSoap

$server

=

new

soap_server();

//創建soap服務端

$server-configureWSDL(“login_service”);

//配置WSDL

$namespace

=

“”;

$server-wsdl-schemaTargetNamespace

=

$namespace;

//設置wsdl命名空間為

$server-register(

//

註冊Web服務

‘login_verifiy’,

//定義名稱

array(‘name’=’xsd:string’,’pw’=’xsd:string’),

//接受參數

array(‘return’=’xsd:string’),

//返回

$namespace,

//命名空間

false,

//

soapaction:默認

‘rpc’,

//

類型:

rpc

or

document

‘encoded’,

//

參數:encoded(編碼)或

literal(文字)

‘A

web

method

of

login’

//描述

);

$POST_DATA

=

isset($GLOBALS[‘HTTP_RAW_POST_DATA’])?

$GLOBALS[‘HTTP_RAW_POST_DATA’]

:

”;

$server-service($POST_DATA);

//將提交的數據傳遞給soap服務

function

login_verifiy($user,$pw)

{

//服務執行內容,本示例中為顯示輸入的帳號密碼

return

‘user:’.$user.’

password:’.$pw);

}

?

C#客戶端調用:

代碼如下:

[DllImport(“kernel32”)]

//調用api函數讀ini文件。返回值為字元串緩衝區的長度

private

static

extern

long

GetPrivateProfileString(string

section,

string

key,

string

def,

StringBuilder

retVal,

int

size,

string

filePath);

private

void

Form1_Load(object

sender,

EventArgs

e)

{

StringBuilder

temp

=

new

StringBuilder(256);

GetPrivateProfileString(“system”,

“url”,

null,

temp,

256,

System.IO.Directory.GetCurrentDirectory()+”config.ini”);

//通過讀取config.ini配置文件(結構見附加內容)來獲取webservice

url

Program.server_url

=

temp.ToString();

//Program.cs中的全局變數server_url用以儲存webservice

url

}

private

void

button1_Click(object

sender,

EventArgs

e)

{

WebReference.login_service

l

=

new

WebReference.login_service();

string

s=l.login_verifiy(username.Text,

password.Text);

MessageBox.Show(s);

}

附config.ini內容:

代碼如下:

[system]

url=

在線等:如何使同一客戶端請求的多個相同的php腳本實例同時運行?

你的寫LOG和讀LOG的原理是什麼呢?

或者你可以提供部分文件給我,我幫你看看

正如你提供的連接顯示的內容,你考慮先清空緩存,再在ShowLog的PHP里禁止緩存試試。

PHP禁止緩存:

理論上即使有100個頁面同時require application_top.php,每個頁面都打開一個資料庫連接,也不會出現你說的情況的,因為MYSQL和APACHE一樣是支持並發的。建議你仔細分析一下你的代碼。

這種情況只出現在FIREFOX中,IE下不會的。似乎FIREFOX一個URL只能同時有一個線程讀取。你可以測試一下,分別用IE和FIREFOX執行以下的test.php

test.php文件:

?php

for($i=0; $i100; $i++){

echo $i . “br/”;

ob_flush(); flush();

sleep(1);

}

解決辦法是在URL後多加上一個時間戳,保證每次的URL都不一樣,有不會影響你的代碼。例如test.php?23423432, test.php?9923432 這樣就能同時執行了

如果像ajax83316說的那樣,你在程序里使用了耗時的獨佔且鎖定資源(尤其是資料庫)的演算法,只能優化你的演算法了,別無它法

補充說明,伺服器可以同時為很多客戶端(取決於你的伺服器配置)執行一個程序(例如test.php)。像新浪的首頁也許同時有10000個用戶在調用。所以不會是伺服器的問題。

如何通過php實現mqtt協議

MQTT是一個輕量級的消息發布/訂閱協議,它是實現基於手機客戶端的消息推送伺服器的理想解決方案。

我們可以從這裡下載該項目的實例代碼,並且可以找到一個採用PHP書寫的伺服器端實現。

架構如下所示:

wmqtt.jar 是IBM提供的MQTT協議的實現。你可以從如下站點下載它。你可以將該jar包加入你自己的Android應用程序中。

Really Small Message Broker (RSMB) ,他是一個簡單的MQTT代理,同樣由IBM提供。預設打開1883埠,應用程序當中,它負責接收來自伺服器的消息並將其轉發給指定的移動設備。

SAM是一個針對MQTT寫的PHP庫。你可以從這個下載它.

send_mqtt.php是一個通過POST接收消息並且通過SAM將消息發送給RSMB的PHP腳本。

實例代碼:

Ø  採用XMPP協議實現Android推送

這是我在項目中採用的方案。事實上Google官方的C2DM伺服器底層也是採用XMPP協議進行的封裝。

XMPP(可擴展通訊和表示協議)是基於可擴展標記語言(XML)的協議,它用於即時消息(IM)以及在線探測。這個協議可能最終允許網際網路用戶向網際網路上的其他任何人發送即時消息。

androidpn是一個基於XMPP協議的java開源Android push notification實現。它包含了完整的客戶端和伺服器端。經過源代碼研究我發現,該伺服器端基本是在另外一個開源工程openfire基礎上修改實現的,不過比較鬱悶的是androidpn的文檔是由韓語寫的,所以整個研究過程基本都是讀源碼。它的實現示意圖如下:

androidpn客戶端需要用到一個基於java的開源XMPP協議包asmack,這個包同樣也是基於openfire下的另外一個開源項目smack,不過我們不需要自己編譯,可以直接把androidpn客戶端裡面的asmack.jar拿來使用。客戶端利用asmack中提供的XMPPConnection類與伺服器建立持久連接,並通過該連接進行用戶註冊和登錄認證,同樣也是通過這條連接,接收伺服器發送的通知。

androidpn伺服器端也是java語言實現的,基於openfire開源工程,不過它的Web部分採用的是spring框架,這一點與openfire是不同的。Androidpn伺服器包含兩個部分,一個是偵聽在5222埠上的XMPP服務,負責與客戶端的XMPPConnection類進行通信,作用是用戶註冊和身份認證,並發送推送通知消息。另外一部分是Web伺服器,採用一個輕量級的HTTP伺服器,負責接收用戶的Web請求。伺服器架構如下:

最上層包含四個組成部分,分別是SessionManager,Auth Manager,PresenceManager以及Notification Manager。SessionManager負責管理客戶端與伺服器之間的會話,Auth Manager負責客戶端用戶認證管理,Presence Manager負責管理客戶端用戶的登錄狀態,NotificationManager負責實現伺服器向客戶端推送消息功能。

伺服器端界面如下,分別對應了上述的幾個功能模塊:

發送以後,我們可以在手機端看到接收的消息:

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-02 18:06
下一篇 2025-01-02 18:06

相關推薦

  • Python腳本控制其他軟體

    Python作為一種簡單易學、功能強大的腳本語言,具有廣泛的應用領域,在自動化測試、Web開發、數據挖掘等領域都得到了廣泛的應用。其中,Python腳本控制其他軟體也是Python…

    編程 2025-04-29
  • Python生成隨機數的應用和實例

    本文將向您介紹如何使用Python生成50個60到100之間的隨機數,並將列舉使用隨機數的幾個實際應用場景。 一、生成隨機數的代碼示例 import random # 生成50個6…

    編程 2025-04-29
  • Shell腳本與Python腳本的區別

    本文將從多個方面對Shell腳本與Python腳本的區別做詳細的闡述。 一、語法差異 Shell腳本和Python腳本的語法存在明顯差異。 Shell腳本是一種基於字元命令行的語言…

    編程 2025-04-29
  • Python自動化運維腳本

    Python自動化運維腳本是使用Python編寫的代碼,可以幫助管理員自動化執行繁瑣、重複的操作任務。通過Python自動化運維腳本,管理員可以在更短的時間內完成工作,提高工作效率…

    編程 2025-04-28
  • 使用Python圖書館搶座腳本的完整步驟

    本文將從多個方面詳細介紹如何使用Python編寫圖書館的座位搶佔腳本,並幫助您快速了解如何自動搶佔圖書館的座位,並實現您的學習計劃。 一、開發環境搭建 首先,我們需要安裝Pytho…

    編程 2025-04-28
  • ArcGIS的Python腳本需要主函數嗎?

    是的,ArcGIS的Python腳本需要主函數,主函數是Python腳本的入口和起點,沒有主函數腳本無法運行。 一、主函數的作用 在Python腳本中,主函數是代碼的入口,所有的代…

    編程 2025-04-28
  • 如何在dolphinscheduler中運行chunjun任務實例

    本文將從多個方面對dolphinscheduler運行chunjun任務實例進行詳細的闡述,包括準備工作、chunjun任務配置、運行結果等方面。 一、準備工作 在運行chunju…

    編程 2025-04-28
  • Python監控腳本開發指南

    本文將為大家介紹Python編寫監控腳本的方法和技巧,幫助大家更好地了解監控腳本在項目中的應用。 一、監控腳本概述 監控腳本可以作為一個重要的工具來監控伺服器狀態,包括CPU、內存…

    編程 2025-04-27
  • 跨域通信浮標——實現客戶端之間的跨域通信

    本文將介紹跨域通信浮標的使用方法,該浮標可以實現客戶端之間的跨域通信,解決了瀏覽器同源策略的限制,讓開發者能夠更加方便地進行跨域通信。 一、浮標的原理 跨域通信浮標的原理是基於浮動…

    編程 2025-04-27
  • 通信專業Python和Java的開發技巧

    本文旨在介紹通信專業Python和Java的開發技巧,為讀者提供實用且可操作的思路和方法。 一、Python在通信領域中的應用 Python是一種優秀的程序設計語言,因其易學易用、…

    編程 2025-04-27

發表回復

登錄後才能評論