2017-01-01 60 views
0

我試圖從drupal網站(運行在Windows的xampp上)啓動一個julia程序,它需要在後臺運行異步,而php腳本繼續執行。這是我想要使用的代碼:從apache php stack(在drupal)啓動Julia作爲後臺進程

$juliaFile = escapeshellarg(DRUPAL_ROOT . '/sites/all/modules/tsap/Modeling/runme.jl'); 
$cmd = "start /B julia $juliaFile"; 
pclose(popen($cmd, 'r')); 

此代碼的工作完美,如果我通過命令行PHP腳本運行它,但是當它運行通過Apache,然而,下位這是行不通的的代碼都來自從命令行和Web服務器的工作原理(唯一的區別是運行的,而不是朱莉婭程序的PHP腳本)

$phpFile = escapeshellarg(DRUPAL_ROOT . '/sites/all/modules/tsap/Modeling/runme.php'); 
$cmd = "start /B php $phpFile"; 
pclose(popen($cmd, 'r')); 

我也嘗試調用PHP文件中獲取的一個代碼塊由Web服務器執行,也可以從命令行執行,並在服務器嘗試執行時失敗。

我也得到使用反引號操作符和exec()(他們阻止在電話會議上),並在同一個問題用COM::run()結果作爲問題pclose(popen())

沒有人有獲得朱莉婭調用工作任何想法?

感謝您的時間

回答

2

添加你的命令,這使命令在cackground的'&'結束。

您也可以使用proc_open()來運行命令背景。你也可以參考我的post使用proc_open()來運行命令背景。

+0

據我所知,&在windows上不可用,而start/B是另一種選擇,無論如何我試過了,它導致了julia和php版本都失敗。我也嘗試過使用proc_open和proc_close,它們導致與popen和pclose相同的行爲,即爲後臺php進程而不是後臺julia進程。 – Velvacaine

+0

如果這樣,它不是由子進程調用者函數引起的。這是其他原因。 –

相關問題