我有兩個應用程序 - 一個php web應用程序和c程序。 PHP應用程序必須將數據發送到返回結果的c程序。因爲它必須保存先前輸入的數據在內存中。在c和php之間傳遞數據
我處理在c和php之間傳遞數據的問題,通過使用文件(輸入&輸出文件) 如果我的web應用程序發生變化,我的php腳本會更新一個文件,這個文件會被我的c程序讀取,輸出被寫入另一個文件中,web應用程序正在隨時查找變化。
我認爲這不是解決這樣的問題,最聰明的解決方案。Probaly其很多沒有必要的文件訪問。
隨着Inspira的從後面的線程,我認爲使用一種C PHP服務器橋樑可能是一個很好的解決方案。
How to pass value and run c program in php(web application)
Passing data between PHP and C executable in linux
我已經開始與mongoose。 Mongoose是一個非常輕量級的網絡服務器。 我目前的想法是,我的Web應用程序將通過POST直接發送數據到我的C程序。該請求由貓鼬網絡服務器處理。 這是要走的路嗎?或者更好的解決方案將它分成兩個應用程序 1)處理輸入輸出的網絡服務器 - 兩個程序之間的變量通過共享內存傳遞 2)我的當前用於我的操作的c程序(通過共享內存輸入/輸出)
或者這是完全錯誤的方式和a)我應該堅持我的文件解決方案b)有一個更好的方法? 我很抱歉,所有這些問題,但我很新的C和鬥爭了很多,並沒有感到真正有信心與這一切。
編輯
我嘗試更加具體的我的C程序做什麼。基本上它是一個模擬。它就像一個具有大約20-40個輸入的狀態流,它們都是整數,大部分時間只是0或1.程序作用於輸入和以前狀態的基礎上。通過將輸入文件更改爲原點狀態,一次迭代後重置輸入。
輸出文件被更新所有的時間與對應的輸出值(像VAR = 1個VAR2 = 3)
您是否遇到併發問題?如果多個PHP請求同時發生會怎樣?什麼能防止請求在C程序運行時相互干擾? –
不是,應用程序只需要一次處理一個請求只有一個用戶輸入狀態。 輸出對每個人都是一樣的。 我想過這個問題,如果有必要處理不同輸入的不同會話。基本上我需要爲每個模擬一個新的c程序實例。因爲我沒有任何想法來處理這個問題,所以我堅持使用我目前的解決方案。 – jonas
由於我最近在使用ZeroMQ,所有提供的建議中,我會建議在C程序端(或輪詢機制)使用帶有事件循環的ZeroMQ。在PHP中使用JSON解碼數據,使用ZeroMQ將消息壓入C程序。 C程序充當服務器,並在有數據要在PULL ZeroMQ套接字上讀取時作出反應。它讀取消息,解碼JSON,確實有效。任務完成。需要吸收很多,但C和PHP端的實際代碼將非常小,但是完全最優。 –