2011-05-14 67 views
1

是否有可能使用像C++中的PHP這樣的會話?像C++中的PHP會話?

在PHP他們喜歡

$_SESSION['name'] = $value; 

我真的想用C++作爲PHP相同的應用程序...使用需要運行時間解析器。

我用PHP編寫的應用程序使用會話,以便我可以從網站(數字)獲取一些東西,並將值存儲在SESSION變量中,我將其稱爲最後一次,以便在頁面重新加載時將其與新值進行比較。

我寧願在C++中具有相同的功能。

看到,因爲這是無處可去我要去提供的PHP代碼

<?php 
session_start(); 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL,"http://dashjr.org/~luke-jr/programs/bitcoin/pool/balances.json"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
$result=curl_exec ($ch); 
curl_close ($ch); 

echo 'Last BTC: '.$_SESSION['last'].'<br>'; 

$obj = json_decode($result,true); 
echo 'Current BTC: '; 
$new = (int)$obj["1Hy5h24yBYKtQ1vNGaxY5rBJSEuTiMkBkx"]["balance"]/100000000; 
echo $new; 

if((int)$_SESSION['last'] < $new) 
{ 
    echo '<br><br>You earned more'; 
} 
else 
{ 
    echo '<br><br>You earned less'; 
} 

$_SESSION['last'] = $obj["1Hy5h24yBYKtQ1vNGaxY5rBJSEuTiMkBkx"]["balance"]/100000000; 



unset($result,$obj); 

?> 

我需要移植到C++。

+0

你是不是想編寫使用C++的Web應用程序? – 2011-05-14 08:29:39

+0

絕對不是。只是一個小的「解析器」 – dikidera 2011-05-14 08:30:23

+0

http://stackoverflow.com/questions/1005242/how-to-maintain-sessions-with-c-code – 2011-05-14 08:30:41

回答

1

這沒有任何意義,PHP會話是一團糟,因爲這個過程在一個HTTP請求到下一個HTTP請求中都不能存活。我真的不知道你想在這裏實現什麼。也許http://www.boost.org/doc/libs/1_46_1/doc/html/interprocess.html這個?

+0

它的工作原理。我將會話變量設置爲腳本,並在下一次重新載入時將其打印出來,然後獲取新值,從而允許我創建一個先前和當前變量來比較內容。 – dikidera 2011-05-14 08:33:14

0

PHP ...需要一個運行時分析器。

不,請安裝apc或任何其他編譯代碼緩存,並且php只能解析一次。當然,生成的字節碼仍然被解釋爲...

在大型框架(大量代碼)解析時間可能比實際腳本執行時間長很多,所以這會大大減少頁面時間。

+0

原因是,我想將這個應用程序(在php中只是15-20行代碼)解釋給大衆。但是,每一個想使用它的人....麻煩 – dikidera 2011-05-14 08:35:20

+0

>>安裝PHP只是一個簡單的腳本,但通過每一個想使用它的人<<安裝PHP只是一個簡單的腳本?它只需要安裝在託管應用程序的網站上。你是說這不是一個web應用程序,但你只是使用PHP作爲本地應用程序的腳本語言? – 2011-05-14 08:39:40

+0

不會託管該應用程序。這個腳本是爲廣大公衆...釋放源碼和一切。 我初次爲自己編寫它,因爲我知道它如何在PHP中工作。 但是,如果用戶也想爲自己使用它,我不能要求他們安裝PHP,Apache只需15-20行代碼。另一方面,C++將被編譯,剩下的部分留給Windows來處理。 – dikidera 2011-05-14 08:41:52

1

如果您的數據要求很小,您可以將該值存儲在cookie中,當調用者再次調用該cookie時,該cookie將傳回給C++ CGI程序。

編輯:因爲這不是一個web應用程序,只需使用常規的C++ IO功能來保存數據,無論是在文件,註冊表項(Windows)或如果你有廣泛的數據要求,嵌入數據庫像Sqlite。

編輯︰如果它只是坐在一個循環,並且你不需要保存從一個調用到另一個調用(即跨程序重新啓動)的值,只需將值存儲在一個不同的變量。如果你想使用名稱/值對,你可以使用STL hashmap作爲「SESSION」。或者我錯過了一些基本的東西?

+0

它將是一個簡單的控制檯應用程序,每隔X秒循環一次。我需要存儲來自cURL提取的以前的數據,並將它們與新數據進行比較。在PHP中,我使用SESSIONS。在C++中,變量將被覆蓋。 – dikidera 2011-05-14 08:47:36

+0

因爲控制檯應用程序將不會關閉並重新啓動,也許你可以把它放在一個普通變量 – Ibu 2011-05-14 08:56:22

1

在「PHP會話」中,「會話」的概念只有在進行服務器端Web開發時纔有意義。 C++被設計爲儘可能具有通用性(不管這個目標是否完全是一個完全不同的故事),所以它本身並不支持與任何特定應用程序相關的任何概念。當然,在你的特定情況下,這意味着C++沒有本地的「會話」概念。

當然,理論上,你可以用C++進行PHP風格的Web開發,包括使用類似PHP的會話。但是你必須要麼(1)使用一些暴露PHP類會話功能的框架,我懷疑是否有人開發過;或者(2)自己實施所述框架,這將是真的不方便。而也就沒有實際好處,你可以得到的回報爲您帶來的不便:爲什麼人們用C主要原因++中,這些日子(1)性能是太關鍵了使用高級語言,和(2)用其他系統兼容C++是一個要求。 (1)不適用,因爲在大多數情況下,Web應用程序的響應時間主要是通過網絡傳輸消息所花費的時間,即使是部署在Intranet中的Web應用程序。 Web服務器處理請求所花費的時間(無論多麼複雜)通常比較少。 (2)不適用,因爲在Web上互操作的系統是按照標準開發的,這些標準確保這些系統的基礎技術無關緊要。

大多數人說他們需要實現自己的C++應用程序是誰在自己選擇的語言(或他們的老闆選擇的語言)已經實施所述申請,發現性能問題的人。根據我的經驗,大多數由軟件引起的性能問題都是由於應用程序沒有正確設計和/或考慮到可擴展性而實現的。對於Web應用程序來說,最小化服務器行程數量(每次爲了獲得響應而需要通過網絡發送特定值/對象/任何內容)是可以有效影響性能的設計決策。簡而言之:如果性能問題是您希望以C++實現此應用程序的原因,那麼您可以更好地分析當前PHP系統的每個部分,確定導致性能問題的哪一部分,以及重新設計和重新實現他們。

+0

我想讓它在C++作爲PHP不僅是一個快速的方法,但需要Apache和PHP安裝。如果他希望使用我的應用程序,則不需要擔心安裝這些軟件。 – dikidera 2011-05-17 11:14:37

+0

@dikidera:我喜歡這個關於開源的東西:你可以窺視一個progarm的源代碼,以瞭解它的內部運作有多複雜,並且測量在給定的時間框架內重新實現它的機會。所以請閱讀Apache和PHP的源代碼,然後告訴我你將自己重新實現。 – pyon 2011-05-17 13:49:03