2017-01-01 14 views
0

DrupalのWebサイト(Windowsの場合はxamppで動作)からjuliaプログラムを起動しようとしていますが、バックグラウンドで非同期で実行する必要があります実行を続ける。これは私が使用しようとしているコードです:ApacheのPHPスタックからバックグラウンドプロセスとしてJuliaを起動する

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

私は、コマンドラインのPHPスクリプトを介して実行する場合、このコードは完璧に動作しますが、それは、Apache、しかし、次のビットを通るとき、それは動作しません。 (唯一の違いはなく、ジュリアプログラムのPHPスクリプトを実行している)、コマンドラインからとWebサーバの両方から動作するコードの

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

私も取得するPHPファイル内のコードの最初のブロックを呼び出して試してみましたWebサーバーによって実行されます。これはコマンドラインからも成功し、サーバーが実行しようとすると失敗します。

私も、問題はバッククォート演算子とexec()を使用して(彼らが呼び出しをブロック)と誰もがジュリア・コールが動作するように取得するための任意のアイデアを持っていますpclose(popen())

と同じ問題にCOM::run()結果を使用して取得?お時間を

おかげで

答えて

2

はcackgroundにコマンドを入れて、あなたのコマンドの'&'終わりを、追加します。

proc_open()を使用して、コマンドのバックグラウンドを実行することもできます。また、proc_open()を使用している私のpostを参照して、コマンドのバックグラウンドを実行してください。

+0

私が知っている限り、&は窓では利用できません。そして、/ Bが代わりになります。どんな速度でも試してみると、juliaとphpの両方のバージョンが失敗します。また、proc_openとproc_closeを使ってみたところ、popenとpcloseと同じ動作になりました。バックグラウンドのPHPプロセスではなく、バックグラウンドのjuliaプロセスで動作しました。 – Velvacaine

+0

これは、サブプロセス呼び出し関数によって引き起こされません。もう一つの理由です。 –

関連する問題