我正试图在我的php脚本中使用proc_open()来调用和执行另一个php脚本。以下是代码:
$descriptors = array(
0 => array("pipe","r"),
1 => array("pipe","w"),
2 => array("file","./error_log.txt","a")
) ;
$cwd="./";
$process=proc_open('php reversegame.php &', $descriptors,$pipes,$cwd);
if (is_resource($process)) {
$return_value = proc_close($process);
}
这会在error_log.txt 中写入以下错误
PHP:语法错误,意外的'&'在/etc/php5/cli/php.ini中的第107行
我是proc_open的新手,仍在努力掌握这个函数的用法。实际上,我正在尝试在运行另一个脚本的同时执行这个php脚本!
从此行中删除&
$process=proc_open('php reversegame.php ', $descriptors,$pipes,$cwd);
我也面临这个错误。但是这个错误不应该阻止你的脚本工作。此错误是由于使用&INI文件中的运算符(如使用error_reporting E_ALL&~E_NOTICE)。
您可能已禁用proc_open
。
搜索disable_functions
,您将看到disable_functions = show_source,system,shell_exec,passthru,exec,phpinfo,proc_open
。
现在将其更改为disable_functions =
。
然后重新启动所有服务并尝试。
您需要研究使用pcntl_fork()对进程进行分叉
我不知道这是否会让你把另一个脚本放在后台,但你应该能够分叉当前线程,然后在新的分叉线程仍在运行的情况下结束当前线程。