【发布时间】:2012-10-29 18:29:08
【问题描述】:
可能重复:
php exec command (or similar) to not wait for result
exec() waiting for a response in PHP
我有一个调用和运行 Matlab 脚本的 php 脚本。 Matlab 脚本的结果是一个 .png 图像,然后我想将其加载到 php 中并发送到网页。我的php代码是:
$matlabExe = '"C:\\Program Files\\MATLAB\\R2012a\\bin\\matlab.exe"';
$mFile = "'C:\\processSatData.m'";
$combine = '"run(' . $mFile . ');"';
$command = $matlabExe . ' -nodisplay -nosplash -nodesktop -r ' . $combine;
passthru($command);
$im = file_get_contents('C:\\habitat.png');
header('Content-type:image/png');
echo $im;
但是,似乎在发送“passthru”命令后,php 并没有等待 Matlab 脚本完成运行。因此,如果图像文件在运行 php 代码之前不存在,则会收到错误消息。
有没有办法让 php 代码在尝试加载图像文件之前等待 Matlab 脚本完成运行?
【问题讨论】:
-
您可以休眠/循环并等待输出图像文件出现。此外,如果 matlab 关闭,您可能可以使用 proc_open 并等待该过程完成:
-
@Dagon 但链接不能解决 OP 问题 ....
-
第二个链接的标记答案对我来说看起来很完美。
-
OP 想等到程序结束。问题是,它在后台运行(看起来像)。但是为什么
passthru我必须问。没有准备好 matlab,所以我无法测试。