繁体   English   中英

将参数传递给PHP中的新进程

[英]Pass parameters to new process in PHP

我似乎无法使用system()创建一个持久的分叉过程:(是的,参数还可以)

$args = "/code/perl/test/run $a $n $m $s $c &";
system($args);

但是,另一方面,此代码也可以工作,但是没有参数:

system("/code/perl/test/reset &");

那么,有什么问题吗? HTTP请求中的PHP脚本完成后,我的C程序“运行”立即被杀死。

我尝试使用at守护程序使用单独的父进程创建进程,但没有成功。 www-data已从/etc/at.deny中删除

值得注意的是,在第二个示例中,我确实获得了程序输出,但在第一个示例中却没有。

从文档:

如果以这种方式启动程序,则要使其在后台继续运行,必须将程序的输出重定向到文件或其他输出流。 否则,PHP会挂起,直到程序执行结束。

因此,如果立即结束,则很可能似乎没有run正在运行。 尝试将输出发送到其他文件。 尝试: exec("/bin/echo $a $n $m $s $c > /tmp/echo &"); 开始诊断。

在那之后,我将检查safe_mode并尝试escapeshellcmd 作为最后的选择,请尝试反引号`运算符。

这是PHP脚本完成后杀死了所有附加到它的子进程的结果。

如果“ at”变通办法不起作用(您在atd处将其安排为“ now”),就像不适用于我一样,则可能必须编写变通办法。 解决方法是将命令放在/ tmp /中的文件中,然后让守护进程的代码执行文件中的命令,然后将其截断。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM