2017-05-06 155 views
2

我有一個perl腳本,它有一個無限循環,它從用戶讀取一個整數並每次將它添加到變量$ b;如何將一個變量從php傳遞給正在運行的perl腳本

$b = 0; 
while (1 == 1) { 
    $a = <STDIN>; 
    $b = $b + $a; 
    print $b + "\n"; 
} 

我有了一個輸入的文本字段中的PHP形式提交按鈕,然後按下提交按鈕時,我想在輸入文本字段中給出的值傳遞給正在運行的Perl腳本,並獲得$ b變量的最後一個值顯示在我的php表單中。

所以我的問題是如何做到這一點在PHP和Perl之間的互連?

+0

你試過exec()還是system()? – daheda

+0

是的,我嘗試過,但我無法繼續調用相同的運行腳本 – VFX

+0

您是否控制Perl程序?你可以讓它在套接字上聽嗎?還有其他的東西,比如聽TCP。 – simbabque

回答

0

您可以打開一個管道,你的Perl程序的新實例popen

$pipe = popen("/path/to/program.pl", "w"); 

,那麼你可以寫你的號碼給管和Perl代碼將增加再向上

fwrite($pipe, "99\n"); 
+0

如何使用$ pipe將$ b的值返回給php? – VFX

+0

@VFX:這是一個不同的問題,你需要打開一個新的問題。 '$ pipe'連接到Perl程序的stdin,所以你不能讀取它。您將需要使用'proc_open'來代替。爲什麼你需要一個Perl程序來爲你的PHP代碼添加數字? – Borodin

+0

非常感謝你 – VFX

0

perl和php都可以通過UNIX套接字,消息隊列和FIFO等來完成IPC。連接到已經運行的進程STDIN - 如果它存在並且是一個命名的設備/對象 - 並不那麼容易。

+0

謝謝我會搜索它 – VFX

相關問題