我想通過使用erlang端口的erlang來評估php代碼。問題是當要評估的數據比較大時,我得到從php解析錯誤。但是,如果數據較小,那麼我會得到正確的輸出。我認爲當數據長度更大時,erlang是截斷之前的數據,它正在發送給php進行評估。在erlang端口上可以發送或接收的數據長度是否有限制?或者是由於其他原因導致此錯誤?Erlang端口數據傳輸長度
我使用open_port(PORTNAME,PortSettings)打開一個新的端口和在PortSettings我設置[{分組,4},EXIT_STATUS]作爲我的端口選項。
對不起,遺漏的細節。是的,我正在使用spawn作爲portname,你說的正確的是發送的數據是stdin,而php正在發送到stdout,這將回到erlang進程。但是當你說「這樣做的唯一問題是它在每次交易中重新啓動php(1)」時我不明白。「你能解釋一下這個說法嗎? – niting112
我的意思是'php(1)'不會返回處理後的輸出(至少不是全部),直到它的stdin上得到EOF,直到你的Erlang程序調用'port_close() '。然後您必須打開一個新的PHP端口來處理另一個文檔。如果你可以保持PHP進程正常運行,這將會更有效率,這就是打開一個端口時所有的數據包和行分隔符的內容:區分一個事務和下一個事務的方法。由於獨立的PHP解釋器不支持,所以您必須每次重新啓動它。 –