Php 如何通过添加变量在后台运行文件
嘿,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
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);