簡體   English   中英

C ++和PHP之間的通用橋梁

[英]Generic bridge between C++ and PHP

我們有一個Web應用程序(相當重的一個),可以完成一整套東西,web ui,數學處理和建模,以及與數據庫相關的東西。

PHP中發生的許多過程都很慢,主要是因為PHP很難進行數學處理。

在未來,我們希望打破這些緩慢的過程,並以更快的速度重寫它們,可能是C ++,或者Java。

有沒有人知道將數據輸入和輸出PHP以及進入另一種語言環境的通用方法? 我已經考慮將事物串行化為JSON並將它們鏟入/ dev / shm或socket,然后讓另一種語言偵聽套接字,或查看共享內存位置等。

這種類型的東西適用於本機類型,但是當你考慮到傳遞的很多東西實際上是類實例和類似的對象時,它確實很難用。

我不確定一個合理的解決方案,但我一直在考慮Quercus PHP實現,它是純Java,以及PHP / Java橋。
但是,我一直無法找到可以執行類似功能的C ++。 編寫PHP模塊是可能的,但我很難看到它是如何足夠通用的,而不僅僅是將每個新的(和一些舊的)腳本重寫到模塊中,然后在PHP中調用這些函數。

Google協議緩沖區

協議緩沖區

它是什么?

協議緩沖區是一種以高效且可擴展的格式編碼結構化數據的方法。 Google對幾乎所有內部​​RPC協議和文件格式都使用Protocol Buffers。

<endquote>

它支持您以.proto語言定義的對象的快速高效序列化,並且本機支持C ++ / Java,並且第三方添加PHP。

看看Gearman: http//gearman.org/

它適用於C和PHP,是一堆其他語言。 它沒有顯式地陳述C ++ :(

除了作為橋梁工作之外,它還可以作為負載均衡器並提供系統冗余。

我自己沒有用過它,但它看起來非常棒:)

編輯:Gearman會要求你序列化數據,所以在這方面減去。

我們目前正在使用zend框架在我們的PHP代碼中調用C ++庫。 它可能就是你要找的東西。

干杯!

我剛剛完成了“PHP文件對象”的開發,它是Vettrasoft Z目錄的第10層組件。 該對象允許從C ++程序調用嵌入在文檔中的PHP代碼的“預處理”。 應用程序代碼如下所示:

int i;
file_o f_in("mytemplate.txt"), f_out("my_output.txt");
rec_dbag_o bag;
phpfile_o my_php (f_in);

for (i=0; i < 9; i++)
{
    my_php.process(f_out, bag);
    // --do something with 'f_out' (PHP generated output file)--
}

這里的想法是輸入文件(上例中的'f_in')是一個包含PHP代碼(或只是一個直接的PHP文件)的“模板”文件。 生成的輸出進入'f_out'[上面]。 通常這將是一個循環。 來自數據庫('bag',上面)的數據被提供給PHP處理器(數據庫是Vettrasoft的XML替代品),因此將數據從C ++應用程序傳輸到PHP代碼。

與上面提到的一些替代方法不同,您只需將程序鏈接到Z目錄庫。 但是,它確實需要在同一台機器上使用本機PHP'CLI'[命令行界面]處理器(“SAPI”程序)(如果你可以做“http://localhost/somfile.php”,你可能有PHP配置)。

這實際上是Z Directory的最新成員,截至本文撰寫時(2012年6月27日)尚未發布,我們將其稱為“C ++ / PHP橋”。 它在今天通過了alpha,並將在7月中旬的下一個版本(ZP9 / b13)中包含。 一位朋友在stackoverflow.com上指出了這篇文章,由於時機非常巧合,因此對我來說是令人大笑的。

我最近偶然發現了Hiphop優化器。 Facebook使用它,它可能正是你所需要的,盡管我無法從經驗中說出來。 https://github.com/facebook/hiphop-php/wiki/

看看它是否適合你的需求:)

暫無
暫無

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

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