使用passthrough将ajax结果中的变量发送到php


Send Variables from ajax results to php with a 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'];

我遇到的问题是,这需要太长时间,所以我想像在其他领域一样使用passthrough文件,但无法弄清楚如何"passthrough"值这是我的passthrough 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分钟来处理和发送电子邮件)

我想您在问如何将所有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]);

以获取参数。