嘿PHP开发人员我是新手。
今天我想在后台运行我的process.php
文件,因为加载需要太多时间......这是我想要使用的代码。
$proc=new BackgroundProcess();
$proc->setCmd('exec php <BASE_PATH>/process.php hello world');
$proc->start();
我想添加这个ids=$postid&reaction=$reaction
变量而不是hello world。
并希望通过process.php
文件中的帖子接收它,如此
$id =$_POST['ids'];
$type = $_POST['reaction'];
我正在使用这个GitHub文件 https://github.com/pandasanjay/php-script-background-processer/blob/master/README.md
在做downvote之前回答我,我是PHP的新手。
答案 0 :(得分:0)
您可以尝试exec()。如果你想传递参数,那就试试这个。
InputStream is = getContentResolver().openInputStream(data.getData());
Bitmap bitmap = BitmapFactory.decodeStream(is);
希望这对您有用:)
试试这个
//it will store logs to log_data.log
exec("php process.php $id $type >log_data.log &");
答案 1 :(得分:0)
一旦它不是HTTP请求,就无法访问$ _GET和$ _POST超全局。在这种情况下接收参数的正确方法是访问数组$ argv。参见官方文档:
http://php.net/manual/en/reserved.variables.argv.php
UPD:而且,如果你真的想将$ _GET / $ _ 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();
并在process.php
访问它:
$get_params = json_decode(base64_decode($argv[1]), true);
所以,我们刚刚从$ _GET数组创建了JSON。然后,我们知道JSON字符串包含特殊字符(如"
,{
,}
等),并且为了避免处理转义和取消转义的问题,我们只需对此字符串进行编码作为base64。它保证我们在结果字符串中没有特殊字符。现在我们可以将此字符串用作单个参数,我们将其传递给shell命令(您的BackgroundProcess)。最后,在process.php
中,我们可以从$ args [1]访问此字符串,然后从base64解码,然后从JSON解码为常规PHP数组。我们走了。
此解决方案仅用于教育目的,请不要在现实生活中使用。