从ajax结果发送变量到带有passthru的php

时间:2016-03-31 23:45:46

标签: javascript php jquery ajax passthru

我有一个PHP文件,当选中复选框并单击一个按钮时,将调用具有以下代码的js文件

$.ajax ({
    type: "POST",
    url: "decisionExec.php",
    dataType: "json",
    data:({cnt:cnt,amGuide:guides.amGuide,folGuide:guides.folGuide,tichGuide:guides.tichGuide,nebGuide:guides.nebGuide,sterGuide:guides.sterGuide,ingGuide: guides.ingGuide }),
    success: function(data) {
        $("#message").html(data.message);//"Generating the files for the BookScouter results.  An email will be sent when this is completed."
        $("#start2").html(data.start);
    } // end of success

}); // end of ajax

此代码工作正常,并使用POST

将正确的数据发送到我的php文件
 $amG        = $_POST['amGuide'];
 $folG       = $_POST['folGuide'];
 $tichG      = $_POST['tichGuide'];
 $nebG       = $_POST['nebGuide'];
 $sterG      = $_POST['sterGuide'];
 $ingG       = $_POST['ingGuide'];

我遇到的问题是这需要太长时间,所以我想使用passthru文件,就像我在其他领域一样,但无法弄清楚如何“通过”值 这是我的passthru php文件。

 <?php
 passthru('php /decision.php >> /web/webInv.txt &');
 $now = date("m/d/y h:i:s");
 $message = array('message' => 'An email will be sent when it is finished.',
             'start' => 'Started at approx. ' . $now);
 echo json_encode($message);
 ?>

关于我如何做到这一点的任何想法(这个文件需要大约30分钟来处理和发送电子邮件)

1 个答案:

答案 0 :(得分:1)

我想你是在问如何将所有POST参数发送到decision.php。您可以使用serialize()json_encode()序列化它们,并将其作为命令行参数发送到脚本。

$args = escapeshellarg(serialize($_POST));
shell_exec("php /decision.php $args >> /web/webInv.txt 2>&1 &");

使用passthru没有意义,因为输出被重定向,所以没有任何内容可以传递给客户端。

decision.php中,使用:

$_POST = unserialize($argv[1]);

获取参数。