2017-01-01 95 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

如果这样,它不是由子进程调用者函数引起的。这是其他原因。 –