Php 如何通过添加变量在后台运行文件

Php 如何通过添加变量在后台运行文件,php,Php,嘿,PHP开发者,我是新手。 今天我想在后台运行我的process.php文件,因为加载它需要太多时间。。。这是我想要使用的代码 $proc=new BackgroundProcess(); $proc->setCmd('exec php <BASE_PATH>/process.php hello world'); $proc->start(); 我正在使用这个GitHub文件 在进行投票之前,请回答我是PHP新手。你可以试试这个。如果要传递参数,请尝试这样做 //i

嘿,PHP开发者,我是新手。 今天我想在后台运行我的
process.php
文件,因为加载它需要太多时间。。。这是我想要使用的代码

$proc=new BackgroundProcess();
$proc->setCmd('exec php <BASE_PATH>/process.php hello world');
$proc->start();
我正在使用这个GitHub文件

在进行投票之前,请回答我是PHP新手。

你可以试试这个。如果要传递参数,请尝试这样做

//it will store logs to log_data.log
exec("php process.php $id $type >log_data.log &");
希望这对你有用:)

像这样试试

$id =$_POST['ids'];
$type = $_POST['reaction'];
   function execInBackground() {
       //this will run in background
       exec("php process.php $id $type > /dev/null &"); 
    }

只要它根本不是HTTP请求,您就无法访问$\u GET和$\u POST superglobals。在本例中,接收参数的正确方法是访问数组$argv。见正式文件:


UPD:而且,如果您真的想将$\u GET/$\u POST参数传递给这个通过shell执行的脚本,下面是一个肮脏的技巧:

$get_params_as_string = base64_encode(json_encode($_GET));
$proc=new BackgroundProcess();
$proc->setCmd("exec php <BASE_PATH>/process.php {$get_params_as_string}");
$proc->start();
因此,我们刚刚从$\u GET数组创建了JSON。然后,正如我们所知,JSON字符串包含特殊字符(如
{
}
,等等),并且为了避免处理转义和取消转义的问题,我们只需将此字符串编码为base64。这保证了结果字符串中没有特殊字符。现在我们可以将此字符串用作单个参数,并将其传递给shell命令(您的后台进程)最后,在
process.php
中,我们可以从$args[1]访问这个字符串,然后从base64解码,然后从JSON解码到一个常规的php数组


此解决方案仅用于教育目的,请不要在现实生活中使用。

“在使用此解决方案之前,请回答我。”“回答什么?我在这里看不到问题@kerbholz的可能副本我想添加变量,而不是hello world,并使用process.phpHow中的get或post方法接收它来完成此操作。$proc=new BackgroundProcess()$proc->setCmd('exec({PHP path}process.PHP$id$type>log_data.log&')$proc->start();你是说这个吗?你可以简单地调用
exec(“php process.php$id$type>log\u data.log&”如果您感到困惑,只需检查更新的答案<代码>函数execInBackground(){//这将在后台exec(“php process.php$id$type>/dev/null&”)中运行}
$get_params = json_decode(base64_decode($argv[1]), true);